顺序表的基本操作:创建、插入、删除、查找。
头文件
#include <stdlib.h>
#include <stdio.h>
# define List_Init_Size 100
# define ListIncrement 10
定义结构体类型
typedef int ElemType; //定义数据元素的类型
typedef struct {
ElemType *elem; //存储空间基址
int length; //当前长度(数据元素个数)
int ListSize;//当前分配的存储容量
} Sqlist; //定义顺序表的类型
函数声明
void InitList (Sqlist &L); //顺序表的初始化
void Input(Sqlist &L); //顺序表的输入
void Output(Sqlist L); //顺序表的输出
void deleteList(Sqlist &L,int i); //顺序表的删除
void InsertList(Sqlist &L,int i,ElemType x); //顺序表的插入
顺序表的初始化
void InitList (Sqlist &L){
L.elem=(ElemType *)malloc(List_Init_Size*sizeof(ElemType));//为顺序表分配一个大小为List_Init_Size的数组空间
if (!L.elem) exit(0) ;
L.length=0;
L.ListSize=List_Init_Size;
}
顺序表的插入
void InsertList(Sqlist &L,int i,ElemType x)
{
int j;
for(j=L.length-1;j>=i-1;--j)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=x;
++L.length;
}
顺序表的输入和输出
//输入n个数据元素
void Input(Sqlist &L)
{
int n,x; //n代表的是输入的个数,x代表的是输入的数据
scanf ("%d",&n);
for (int i=1;i<=n;i++)
{
scanf ("%d",&x);
L.elem[i-1]=x;
L.length++;
}
}
//输出顺序表
void Output(Sqlist L)
{
printf("number of elements:%d\n",L.length); //打印出顺序表的长度
for (int i=1;i<=L.length;i++)
{
printf("%d element:%d\n",i,L.elem[i-1]); //打印出顺序表的各元素
}
}
顺序表的删除
void deleteList(Sqlist &L,int i)
{
int j;
for(j=i;j<=L.length-1;j++) //i代表的是删除第i个元素
L.elem[j-1]=L.elem[j];
L.length--;
}