此程序包括顺序表结构体的定义,顺序表的建立,以及查找、插入和删除的基本操作。
#include<stdio.h>
#include<stdlib.h>
typedef int datatype;
#define MAXSIZE 100
typedef struct
{
datatype data[MAXSIZE];
int last;
}SeqList;
SeqList *Init_SeqList()//初始化函数
{
SeqList *L;
L=(SeqList*)malloc(sizeof(SeqList));
L->last=-1;
return L;
}
int Insert_SeqList(SeqList *L,int i,datatype x)//插入函数
{
int j;
if(L->last==MAXSIZE-1)
{
printf("线性表为空\n");
return(-1);
}
if(i<1||i>(L->last+2))
{
printf("插入位置错误\n");
return(0);
}
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return(1);
}
void Print(SeqList *L)//打印函数
{
if(L->last==-1)
printf("顺序表为空\n");
int i;
for(i=0;i<=L->last;i++)
printf("%d\n",L->data[i]);
}
int Delete_SeqList(SeqList *L,int i)//删除函数
{
int j;
if(i<1||i>(L->last+1))
{
printf("此元素不存在\n");
return(0);
}
for(j=i;j<L->last+1;j++)
L->data[j-1]=L->data[j];
L->last--;
return(1);
}
int Location_SeqList(SeqList *L,datatype x)//查找函数
{
int i=0;
while(i<=L->last&&L->data[i]!=x)
i++;
if(i>L->last)
return(-1);
else
return(i);
}
void main()
{
SeqList *L;
L=Init_SeqList();
int num;
printf("请输入元素个数:\n");
scanf("%d",&num);
int i;
int x;
int r;
for(i=1;i<=num;i++)
{
printf("请输入第%d个元素:\n",i);
scanf("%d",&x);
r=Insert_SeqList(L,i,x);
}
printf("顺序表为:\n");
Print(L);
//删除
/*int y;
int w;
printf("请输入要删除数的序号:\n");
scanf("%d",&y);
w=Delete_SeqList(L,y);
printf("删除后顺序表为:\n");
Print(L);*/
//查找
int w;
int c;
printf("请输入要查找的数:\n");
scanf("%d",&w);
c=Location_SeqList(L,w);
printf("要查找数的位置为:\n");
printf("%d",c+1);
printf("要查找的数为:\n");
printf("%d",L->data[c]);
}