首页 > 代码库 > 数据结构小结

数据结构小结

1、顺序表

顺序表的定义

  #define MaxSize 100

  ElemType Sqlist[MaxSize];

  int len;

相当于 int a[100];

动态生成一张顺序表的方法可描述如下:

#define MaxSize 100

typedef struct{

ElemType *elem;

int length;

int listsize;

}Sqlist;

void initSqlist(Sqlist *L){//初始化一张顺序表

L->elem=(int *)malloc(MaxSize*sizeof(ElemType));

if(!L->elem) exit(0);

L->length=0;

L->listsize=MaxSize;

}

向静态顺序表中第i个位置插入数据

void InserElem(ElemType Sqlist[],int &n,int i,ElemType item){

//向顺序表Sqlist中第i个位置插入元素item,该顺序表的原长度为n

int t;

if(n==MaxSize||i<1||i>n+1) exit(0);

for(t=n-1;t>=i-1;t--)

{

  Sqlist[t+1]=Sqlist[t];//后移元素

}

Sqlist[i-1]=item;

n=n+1;//表长加1

}

向动态顺序表中第i个位置插入元素item

void InsertElem(Sqlist *L, int i, ElemType item)

{

  ElemType *base,*insertPtr,*p;

  if(i<1||i>L->length+1)exit(0);//非法插入

  if(L->length>=L->listsize)

  {

    base=(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));//追加新空间

    L->elem=base;

    L->listsize=L->listsize+10;//存储空间加10

  }

insertPtr=&(L->elem[i-1]);

for(p=&(L->elem[L->length-1]);p>=insertPtr;p--)

  *(p+1)=*p;

*insertPtr=item;

L->length++;

}