#include<stdio.h>
#define MAX 1000
typedef struct
{
int data[MAX];
int len;
}Sqlist;
void inint(Sqlist *l)//初始化顺序表
{
int i,n;
l->len=0;
printf("请输入顺序表的元素的个数N\n");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&l->data[i]);
l->len++;
}
}
void insnode(Sqlist *l,int i,int x)//将X插入到指定位置第i个位置
{
int j;
if((i==0||l->len<i)&&i<=MAX)
{
printf("输入的插入指定位置有错\n");
}
else
{
for(j=l->len;j>=i;j--)
l->data[j]=l->data[j-1];
l->data[i-1]=x;
l->len++;
}
}
void delnode(Sqlist *l,int i)//删除指定位置i的元素
{
int j;
if(i==0||i>l->len)
{
printf("输入的删除指定位置有错\n");
}
else
{
for(j=i-1;j<l->len-1;j++)
l->data[j]=l->data[j+1];
l->len--;
}
}
int locate(Sqlist l,int x)//按x的值查询
{
int i,flag;
for(i=0;i<l.len;i++)
{
if(l.data[i]==x)
{
flag=i;
break;
}
else flag=-1;
}
return flag;
}
int get(Sqlist l,int i)//取第i个位置的值
{
if(i==0||i>l.len)
{
printf("输入的删除指定位置有错\n");
}
else
{
return l.data[i-1];
}
}
void display(Sqlist l)//显示顺序表
{
int i;
for(i=0;i<l.len;i++)
{
printf("%d ",l.data[i]);
}
printf("\n");
}
int main()
{
Sqlist s;
int i,x;
char c;
while(1)
{
printf("**************************\n");
printf("* *\n");
printf("* 1 顺序表初始化 *\n");
printf("* 2 顺序表指定插入 *\n");
printf("* 3 顺序表指定删除 *\n");
printf("* 4 顺序表按值查询 *\n");
printf("* 5 顺序表指定取值 *\n");
printf("* 6 退出 *\n");
printf("**************************\n");
c=getchar();
if(c=='6')break;
else
switch(c)
{
case '1':inint(&s);
printf("初始化后的顺序表:\n");
display(s);
break;
case '2':printf("请输入要插入的位置和值\n");
scanf("%d%d",&i,&x);
insnode(&s,i,x);
printf("插入指定位置值后的顺序表:\n");
display(s);
break;
case '3':printf("请输入要删除的位置\n");
scanf("%d",&i);
delnode(&s,i);
printf("删除指定位置值后的顺序表:\n");
display(s);
break;
case '4':printf("请输入要按值查询的值\n");
scanf("%d",&x);
if(locate(s,x)!=-1)
printf("在顺序表中查到了\n");
else
printf("没有查到");
break;
case '5':printf("请输入要取的值的位置\n");
scanf("%d",&i);
printf("第%d个位置的值=%d\n",i,get(s,i));
break;
}
getchar();
}
return 0;
}
线性表--顺序表
最新推荐文章于 2024-05-10 17:46:55 发布