#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR -1
#define MAXNUM 100
typedef int DataType;
typedef struct
{
DataType data[MAXNUM];
int last;
}SeqList;
void SeqLSetNull(SeqList*1)
{
1->last=-1;
}
int SeqLLength(SeqList*1)
{
return 1->last+1;
}
DataType SeqLGet(Seqlist*1,int i)
{
if(i<1||1->last+1)
{
printf("\t i的位置不正确\n");
return ERROR;
}
return 1->data[i-1];
}
int SeqLLocate(SeqList*1,DataType x)
{
int i;
for(i=0;i<=1->last;i++)
if(1->data[i]==x) return(i+1);
return 0;
}
int SeqLInsert(SeqList*1,int i,DataType x)
{
int j;
if(1->last>=MAXNUM-1)
{
printf("\t溢出\n");
return ERROR;
}
if(i<1||i>1->last+2)
{
printf("\t插入的位置不正确\n");
return ERROR;
}
else
{
for(j=1->last;j>=i-1;j--)
1->data[j+1]=1->data[j];
1->dataa[i-1]=x;
1-last++;
}
return OK;
}
int SeqLDelete(SeqList*1,int i)
{
int j;
if(i<1||i>1->last+1)
{
printf("\t删除的位置不正确\n");
return ERROR;
}
else
{
for(j=i;j<=1->last;j++)
1->data[j-1]=1->data[j];
1->last--;
}
return OK;
}
void SeqLCreate(SeqList*1)
{
int i,n;
printf("\t请输入表的长度:");
scanf("%d",&n);
1-last=n-1;
printf("\t依次输入表中的数据元素:\n");
for(i=0;i<n;i++)
{
printf("\t第%d个元素是:",i+1);
scanf("%d",&1->data[i]);
}
}
void SeqLPrint(SeqList*1)
{
int j;
if(1->last<0)
{
printf("\t表空!\n");
exit(0);
}
else
{
printf("\n表的数据元素如下:\n(");
for(j=0;j<=1->last;j++)
printf("%5d,"1->data[j]);
printf("\b)\n");
}
}
#include<seqlist.h>
#include<seqlist.c>
int main(int argc,char*argv[])
{
DataType y;
SeqList*a,x;
int m,t,read=0;
a=&x;
do
{
puts(" 关于顺序表的操作\n");
puts(" ==================================\n");
puts(" 1-----置空表");
puts(" 2-----建表");
puts(" 3-----求表长");
puts(" 4-----取节点");
puts(" 5-----定位");
puts(" 6-----插入");
puts(" 7-----删除");
puts(" 8-----输出");
puts(" 0-----退出"):
printf(" 请输入代号(0——8):");
scanf("%d",&read);
printf("\n");
switch(read)
{
case 1:SeqLSetNull(a);break;
case 2:SeqLCreate(a);break;
case 3:printf("\t表的长度是:%d\n",SeqLLength(a));break;
case 4:printf("\t取节点的位置是:");
scanf("%d",&m);
y=SeqLGet(a,m);
if(y)
printf("\t第%d个节点是%d\n",m,y);break;
case 5:printf("\t定位的数据元素是:");
scanf("%d",&y);
t=SeqLLocate(a,y);
if(t)
printf("\t定位数据元素的位置是:%d\n",t);break;
case 6:printf("\t插入数据元素是:"):
scanf("%d",&y);
printf("\t查人的位置是:");
scanf("%d",&m);
t=SeqLPrint(a);break;
case 7:printf("\t删除的位置是:");
scanf("%d",&m);
t=SeqLDelete(a,m);
if(t)
printf("\t删除后表的数据元素是:\n");
SeqLPrint(a);break;
case 8:SeqLPrint(a);break;
case 0:read=0;
}
}while(read!=0);
return 0;
}