代码
#include <stdio.h>
#include <stdlib.h>
#define MaxSize 100
typedef int DataType;
typedef struct
{
DataType data[MaxSize];
int length;
}SeqList;
//初始化顺序表
void InitList(SeqList *L)
{
L->length =0;
}
//建立顺序表
int CreatList(SeqList *L,DataType a[],int n)
{
if(n>MaxSize)
{
printf("顺序表的空间不够,无法建立顺序表\n");
return 0;
}
int i;
for(i=0;i<n;i++)
L->data[i]=a[i];
L->length =n;
return 1;
}
//判空操作
int Empty(SeqList *L)
{
if(L->length ==0)
return 1;
else return 0;
}
//顺序表的长度
int Length(SeqList *L)
{
return L->length ;
}
//遍历操作
void PrintList(SeqList *L)
{
int i;
for(i=0;i<L->length ;i++)
printf("%d",L->data[i]);
}
//按值查找
int Locate(SeqList *L,DataType x)
{
int i;
for(i=0;i<L->length ;i++)
if(L->data[i]==x) return i+1;
return 0;
}
//按位查找
int Get(SeqList *L,int i,DataType*ptr)
{
if(i<1||i>L->length)
{
printf("查找位置非法,查找失败\n");
return 0;
}
else
{*ptr=L->data[i-1];
return 1;
}
}
//插入操作
int Insert(SeqList *L,int i,DataType x)
{
if(L->length>=MaxSize37)
{printf("上溢错误,插入失败\n");
return 0;
}
if(i<1||i>L->length+1)
{
printf("位置错误,插入失败\n");
return 0;
}
int j;
for(j=L->length;j>=i;j--)
L->data[j]=L->data[j-1];
L->data[i-1]=x;
L->length++;
return 1;
}
//删除操作
int Delete(SeqList *L,int i,DataType *ptr)
{
if(L->length ==0)
{printf("下溢错误,删除失败\n");
return 0;
}
if(i<1||i>L->length )
{printf("位置错误,删除失败\n");
return 0;
}
*ptr=L->data[i-1];
int j;
for(j=i;j<L->length ;j++)
L->data[j-1]=L->data[j];
L->length--;
return 1;
}
int main()
{
int a[8]={1,2,3,4,5,6,7,8},i,x;
SeqList L;
CreatList(&L,a,8);
printf("当前线性表的数据为:");
PrintList(&L);
printf("\t当前线性表的长度为:%d\n",Length(&L));
Insert(&L,2,8);
printf("执行插入操作后数据为:");
PrintList(&L);
printf("\t插入后线性表的长度为:%d\n",Length(&L));
printf("请输入查找的元素值:");
scanf("%d",&x);
i=Locate(&L,x);
if(0==i) printf("查找失败\n");
else printf("元素%d的位置为;%d\n",x,i);
printf("请输入查找第几个元素值:");
scanf("%d",&i);
if(Get(&L, i, &x) ==1) printf("第%d个元素值是%d\n", i, x);
else printf("线性表中没有第%d个元素\n", i);
printf("请输入要删除第几个元素:");
scanf("%d", &i);
if(Delete(&L,i,&x)==1){
printf("删除第%d个元素是%d,删除后数据为: ", i, x);
PrintList(&L);
}
else printf("删除操作失败\n");
return 0;
}
数据演示结果