有一个数据表,目前含有10个数据,现要求在这组数值上完成初始化、显示、插入、删除、定位、求长度等操作。(插入、删除、定位)
#include"stdio.h"
//定义顺序表类型
#define DATATYPE1 int
#define MAXSIZE 100
typedef struct
{
DATATYPE1 datas[MAXSIZE];
int last;
}SEQUENLIST;
void init_seqlist(SEQUENLIST *a)
{//初始化,将顺序表a初始化,数据表中第一个元素的下标为1
a->last=0;
}
void print_seqlist(SEQUENLIST *a)
{//打印函数
int i;
printf("顺序表元素为:\n");
for(i=1;i<=a->last;i++)
{
printf("%5d",a->datas[i]);
}
printf("\n");
}
int insert_seqlist(SEQUENLIST *a,DATATYPE1 x,int i)//a是顺序表,x是插入值,i是插入位置
{//插入函数
int k;
if(i<1||i>a->last+1||a->last>=MAXSIZE)//i的非法位置
return 0;
else
{
if(i>a->last)//i在最后面时
{
a->datas[i]=x;
a->last=i;
}
else
{
for(k=a->last;k>=i;k--)//i在中间时
a->datas[k+1]=a->datas[k];
a->datas[i]=x;
a->last=a->last+1;
}
return 1;
}
}
int delete_seqlist(SEQUENLIST *a,int i)//a为顺序表,i为删除的位置
{//删除函数
int k;
if(i<1||i>a->last||a->last==0)//i的非法位置
{
return 0;
}
else
{
for(k=i;k<a->last;k++)
a->datas[k]=a->datas[k+1];
a->last--;
return 1;
}
}
int locate_seqlist(SEQUENLIST *a,DATATYPE1 x)
{//定位函数
int k;
k=1;
while(k<=a->last&&a->datas[k]!=x)
k++;
if(k<=a->last)
return k;
else
return 0;
}
int length_sqlist(SEQUENLIST *a)
{//求长度
return a->last;
}
主函数:主要有插入、删除、定位三种操作。
main()
{
SEQUENLIST a;
int x,i;
init_seqlist(&a);
i=1;
printf("构造含10个元素的顺序表\n");
while(i<=10)//构造顺序表
{
printf("请输入第%i个整数:",i);
scanf("%d",&x);
if(insert_seqlist(&a,x,i)!=1)
return 0;
i++;
}
printf("\n顺序表构造完毕,共有10个元素,为别为:");
print_seqlist(&a);
/*插入******************************
printf("请输入要插入元素的位置i:\n");
scanf("%d",&i);
printf("请输入元素的值x:\n");
scanf("%d",&x);
if(insert_seqlist(&a,x,i)!=1)
return 0;
print_seqlist(&a);*/
/*删除******************************
printf("\n输入要删除元素的序号:");
scanf("%d",&i);
if(delete_seqlist(&a,i)!=1)
return 0;
print_seqlist(&a);*/
/*定位******************************
printf("\n请输入一个整数:");
scanf("%d",&x);
printf("\n%d在顺序表中是第%d\n",x,locate_seqlist(&a,x));*/
//显示表的长度
printf("%d",length_sqlist(&a));
}
扫下面这个二维码,关注更多内容。
头顶渐突终不悔,代码道出我的爱。