1.1顺序表的定义
(1)静态定义
#define MaxSize 100
typedef struct{
int data[MaxSize];
int length;
}seqList;
(2)动态定义
#define InitSize 50
typedef struct{
int *data;
int MaxSize,length;
}seqList;
1.2顺序表的初始化
(1)静态初始化
void seqListInit(seqList *L)
{
L->length=0;
}
(2)动态初始化
void seqListInit(seqList *L)
{
L->data=(int *)malloc(sizeof(int)*InitSize);
if(!L->data)
{
printf("分配失败");
exit(0);
}
L->length=0;
L->MaxSize=InitSize;
}
1.3 顺序表的创建
(1)静态创建
int createList(seqList *L,int a[],int n)
{
int i;
if(n>L->MaxSize)
{
printf("创建失败");
return 0;
}
//通过循环将数组元素全部遍历放入顺序表中
for(i=0;i<n;i++)
{
L->data[i]=a[i];
L->length++;
}
return 1;
}
(2)动态创建
//动态创建
int createList(seqList *L,int a[],int n)
{
//首次检查是否超出存储范围
if(n>L->MaxSize)
{
//分配空间
int *newbase=(int *)malloc(sizeof(int)*(MaxSize+n))
if(newbase)
{
L->data==newbase;
L->MaxSize+=n;
}
else
{
return 0;
}
}
//通过循环将数组元素全部遍历放入顺序表中
for(i=0;i<n;i++)
{
L->data[i]=a[i];
}
L->length=n;
return 1;
}
1.4 顺序表的插入
(1)静态插入
//顺序表的静态插入
int ListInsert(seqList *L,int i,int e)
{
int j
//判断插入位置是否正确
if(i<1||i>L->length+1)
{
return 0;
}
//判断是否存储位置是否已满
if(L->MaxSize==L->length)
{
return 0;
}
for(j=L->length;j>i-1;j--)
{
L->data[j]=L->data[j-1];
}
L->data[j]=e
L->length++;
return 1;
}
(2)动态插入
//顺序表的静态插入
int ListInsert(seqList *L,int i,int e)
{
int j
//判断插入位置是否正确
if(i<1||i>L->length+1)
{
return 0;
}
//判断是否存储位置是否已满
if(L->MaxSize==L->length)
{
int *newbase=(int *)malloc(sizeof(int)*(MaxSize+1))
if(newbase)
{
L->data==newbase;
L->MaxSize+=1;
}
else
{
return 0;
}
}
for(j=L->length;j>i-1;j--)
{
L->data[j]=L->data[j-1];
}
L->data[j]=e
L->length++;
return 1;
}
1.5 顺序表的删除
int ListDelete(seqList *L,int i,int *e)
{
//判断删除位置
if(i<1||i>L->length) return 0;
*e=L-data[i-1];
int j;
for(j=i;j<L->length;j++)
{
L->data[j-1]=l->data[j];
}
L->length--;
return 1;
}
1.6 顺序表的查找
int getList(seqList L,int i)
{
if(i<1||i>L.length) return 0;
else return L->data[i-1];
}
博客围绕顺序表展开,介绍了顺序表的定义,包括静态和动态定义;阐述了顺序表的初始化、创建、插入、删除和查找操作,且各操作均有静态和动态两种实现方式。
1569

被折叠的 条评论
为什么被折叠?



