//顺序表的建立
#include<stdio.h>
#include<stdlib.h>
typedef int element;
#define MAXSIZE 1024
typedef struct
{
element data[MAXSIZE];
int last;
}Sequ_List;
Sequ_List*Creat_sequlist();//顺序表的建立
int delete_sequlist(Sequ_List*L,int i);//按指定位置进行删除
int insrt_seulist(Sequ_List*L,int i,element x);//按指定位置进行插入
element ret_data(Sequ_List*L,int i);//返回指定位置的数据
void print_sequlist(Sequ_List*L);//遍历
int search_sequlist(Sequ_List*L,element x);//返回相应数据的位置
void main()
{
Sequ_List*p;
int i;//插入位置
int j;//删除位置
int k;//返回指定位置
int l;//与t相对应
element m;//插入的数据
element n;//返回数据的指定位置
element t;//返回数据的位置
p=Creat_sequlist();
if(p!=NULL)
printf("链表创建成功!\n");
printf("请输入想要插入的位置和数据:\n");
scanf("%d%d",&i,&m);
if(insrt_seulist(p,i,m)==1)
printf("按指定位置插入数据成功!\n");
else
printf("数据插入失败!\n");
printf("请输入删除节点的位置:\n");
scanf("%d",&j);
if(delete_sequlist(p,j))
printf("删除成功!\n");
else
printf("删除失败!\n");
print_sequlist(p);
printf("请输入要返回的位置:\n");
scanf("%d",&k);
n=ret_data(p,k);
printf("data[%d]=%d\n",k,n);
printf("请输入要返回的位置的数据:\n");
scanf("%d",&t);
l=search_sequlist(p,t);
printf("%d的位置为%d\n",t,l);
printf("遍历后的结果为:\n");
print_sequlist(p);
}
Sequ_List*Creat_sequlist()
{
Sequ_List*L;
element x;
printf("请输入数据:\n");
scanf("%d",&x);
int i=0;
L=(Sequ_List*)malloc(sizeof(Sequ_List));
if(L==NULL)
return L;
else
{
while(x!=0)
{
L->data[i++]=x;
scanf("%d",&x);
}
L->last=i-1;
}
return L;
}
int insrt_seulist(Sequ_List *L,int i,element x)
{
int j;
if(i<1||i>L->last+2)//判断插入位置是否合法
return 0;
if(L->last+1>=MAXSIZE)//判断空间是否已满
return -1;
for(j=L->last;j>=i-1;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i-1]=x;
L->last=L->last+1;
return 1;
}
int delete_sequlist(Sequ_List*L,int i)
{
int j;
if(i<1||i>L->last+1)
return 0;
else
{
for(j=i-1;j<=L->last;j++)
L->data[j]=L->data[j+1];
}
L->last=L->last-1;
return 1;
}
element ret_data(Sequ_List*L,int i)
{
if(i<1||i>L->last+1)
printf("返回数据位置违法!\n");
else
return (L->data[i-1]);
}
int search_sequlist(Sequ_List*L,element x)
{
int i;
for(i=0;i<=L->last;i++)
if(L->data[i]==x)
break;
if(i>L->last)
return 0;
else
return i+1;
}
void print_sequlist(Sequ_List*L)
{
int i;
for(i=0;i<=L->last;i++)
printf("data[%d]=%d",i+1,L->data[i]);
if((i+1)%5==0)
printf("\n");
}
C语言数据结构顺序表的相关操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.