这里采用顺序存储的方式简单的实现线性表的插入和删除操作。
#include <stdio.h>
typedef int datatype; /*datatype可为任意类型,这里假设为int*/
#define maxsize 1024 /*线性表可能的最大长度,这里假设为1024*/
typedef struct SqList
{
datatype data[maxsize];
int length;
}SqList;
/*线性表的插入操作,在线性表的第i个位置插入一个新节点,使长度为n的线性表变成长度为n+1的线性表*/
int Line_Insert(SqList *L,datatype x,int i)
{
int j;
if (L->length == maxsize) /*表已满*/
{
printf("Overflow");
return NULL;
}
if (i < 1 || i > L->length+1)/*插入位置错误*/
{
printf("The location is error\n");
return NULL;
}
else
{
for (j = L->length - 1; j >= i-1; j--)
{
L->data[j+1] = L->data[j]; /*节点后移*/
}
L->data[i-1] = x;
L->length ++;
return 1;
}
}
/*线性表的删除操作*/
int Line_Delete(SqList *L,int i)
{
int j;
if ( i < 1 || i > L->length)
{
printf("The location error\n");
return NULL;
}
else
{
for ( j = i; j < L->length; j++) /*节点前移*/
{
L->data[i-1] = L->data[i];
}
L->length--;
return 1;
}
}