顺序表:即在计算机中以数组结构保存的线性表,与数组类似,但可以对其进行插入删除等操作,其中数据类型是一样的,并且存储在一个连续的区域内。
下面创建顺序表并进行测试;
#include <stdio.h>
#define ListSize 100 //表空间大小设定为100
#define N 8
//表结构
typedef struct{
int date[ListSize]; //表数据
int length; //表长度
}SeqList;
//插入新节点,L为表,x为插入值,i为位置
void InsertList(SeqList *L, int x, int i)
{
int j;
if(i < 0 || i > L->length+1 ) //L->length 可以用(*L).length 代替
printf("Error,the location is illegal");
if(L->length >= ListSize)
printf("Error,L is overflow");
if(i==0){
L->date[0] = x;
L->length = 1;
}
else{
for(j = L->length-1; j >= i-1 ; j--)
L->date[j+1] = L->date[j];
L->date[i] = x;
L->length++;
}
}
//删除节点,L为表,i为删除位置
void DeleteList(SeqList *L, int i)
{
int j;
if(i < 0 || i > L->length )
printf("Error,the location is illegal");
if(L->length >= ListSize)
printf("Error,L is overflow");
for(j = i; j < L->length; j++)
L->date[j] = L->date[j+1];
L->length--;
}
//顺序表初始化
void InitList(SeqList *L)
{
L->length = 0;
}
//测试通过插入数创建顺序表,并对其进行删除操作
int main()
{
int i=0,j = 0, a[] = {1,5,6,7,8,4,3,2};
SeqList L,K;
InitList(&L);
printf("The number of list is:");
for(i=0;i<N;i++) //插入节点
{
InsertList(&L, a[i],i);
printf("\t%d",a[i]);
}
DeleteList(&L,3); //删除第三个数
K = L; //表复制
printf("\nThe number of list K is:");
while(j<K.length){
printf("\t%d",K.date[j]);
j++;
}
}
测试结果得到:
表L:1 5 6 7 8 4 3 2
表K:1 5 6 8 4 3 2