首页 > 代码库 > 数据结构小结
数据结构小结
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++;
}