程序要求:建立一个顺序表,用户通过输入个数和一组非递减顺序的数,即顺序表按照非递减顺序排列,对顺序表进行建立,删除指定位置的数,查找指定位置的数,插入一个数字功能。程序代码如下:标签:int,hawk189,博客,++,length,printf,基本操作,data,Seqlist From: https://blog.51cto.com/u_15858333/5817593
#include
#include
#define listsize 100
typedef struct{
int data[listsize];
int length;
}Seqlist;
//新建顺序表
void createlist(Seqlist *l,int n)
{
int i;
printf("请输入顺序表元素:\n");
for(i=0;i
{
scanf("%d",&l->data[i]);
l->length=n;
}
}
//输出顺序表
void printlist(Seqlist *l,int n)
{
int i;
printf("顺序表为:");
for(i=0;i
{
printf("%d ",l->data[i]);
}
}
//查找元素
void locateElem(Seqlist *l,int n)
{
int i=1,*p;
p=l->data;
printf("\n请输入要查找的元素n:");
scanf("%d",&n);
while(i<=l->length&&(*p++!=n)) ++i;
if(i<=l->length)
printf("要查找的数的位置为:%d",i);
}
//插入元素
void listinsert(Seqlist *l,int i,int n)
{
int *q,*p;
printf("\n请输入要插入的数:");
scanf("%d",&n);
if(l->length==0)
{
l->data[0]=n;
++l->length;
}
q=&(l->data[0]);
while((*q<=n)&&(q<=&(l->data[l->length-1])))
{
++q;
}
++l->length;
for(p=&(l->data[l->length-1]);p>=q;--p)
{
*(p+1)=*p;
*p=n;
}
printf("输出新表:\n");
for(i=0;ilength;i++)
{
printf("%d ",l->data[i]);
}
}
//删除元素
void listdelete(Seqlist *l,int i,int n)
{
int *p,*q;
printf("\n请输入要删除的数的位置:");
scanf("%d",&i);
if(i<1||i>l->length)
printf("删除元素失败!");
p=&l->data[i-1];
n=*p;
q=l->data+l->length-1;
for(++p;p<=q;++p)
{
*(p-1)=*p;
--l->length;
}
for(i=0;ilength+1;i++)
{
printf("%d ",l->data[i]);
}
}
void main()
{
int n;
int i=0;
Seqlist l;
l.length=0;
printf("请输入线性表长度:");
scanf("%d",&n);
createlist(&l,n);
printlist(&l,n);
locateElem(&l,n);
listinsert(&l,i,n);
listdelete(&l,i,n);
printf("\n");
}