一、线性表构建:
代码如下:
#include <stdio.h>
#include <stdlib.h>
#define MAX 100
typedef int Datatype;
typedef struct
{
Datatype data[MAX];
int last; //线性表的实际长度
}Seqlist;
void menu();
void Seqlist_Init(Seqlist *L);
void Seqlist_Creat(Seqlist *L);
int Seqlist_output(Seqlist *L);
int Seqlist_Insect(Seqlist *L,int i,Datatype x);
int Seqlist_check(Seqlist *L,int num); //按序号查找
int Seqlist_delete(Seqlist *L,int num); //按序号删除
int main()
{
int num;
int x;
int select; //操作数定义
Seqlist list; //定义一个线性表
Seqlist_Init(&list); //线性表的初始化
while(1)
{
menu();
printf("请输入对应对应的操作数!\n");
scanf("%d",&select);
switch(select)
{
case 1:Seqlist_Creat(&list);break;
case 2:printf("请输入查找的序号:");
scanf("%d",&num);
if(!Seqlist_check(&list,num))
{
printf("查找成功!\n");
};break;
case 3:printf("请输入删除的序号:");
scanf("%d",&num);
if(!Seqlist_delete(&list,num))
{
printf("删除成功!\n");
};break;
case 4:printf("请输入插入的序号和数据:");
scanf("%d %d",&num,&x);
if(!Seqlist_Insect(&list,num,x))
{
printf("插入成功!\n");
};break;
case 5:if(!Seqlist_output(&list))
{
printf("输出成功!\n");
};break;
case 0:exit(0);break;
default:break;
}
system("pause");
system("cls");
}
return 0;
}
/********显示的菜单*********/
void menu()
{
printf("(1)--数据的创建!\n");
printf("(2)--数据的查找!\n");
printf("(3)--数据的删除!\n");
printf("(4)--数据的插入!\n");
printf("(5)--数据的输出!\n");
printf("(0)--退出!\n");
}
/***********线性表的初始化**************/
void Seqlist_Init(Seqlist *L)
{
L->last=0;
}
/************线性表的插入*****************/
void Seqlist_Creat(Seqlist *L)
{
int i;
printf("请输入线性表的长度:");
scanf("%d",&(L->last));
printf("请输入数据:\n");
for(i=1;i<=L->last;i++)
{
scanf("%d",&L->data[i]); //输入线性表数据
}
}
/*************线性表的输出****************/
int Seqlist_output(Seqlist *L)
{
int i;
if(L->last==0)
{
printf("线性表为空!\n");
return 1;
}
printf("输出的数据为:\n");
for(i=1;i<=L->last;i++)
{
printf("%d ",L->data[i]); //输入线性表数据
}
return 0;
}
/*************线性表的插入******************/
int Seqlist_Insect(Seqlist *L,int i,Datatype x)
{
int j;
if(L->last>MAX)
{
printf("线性表已满,无法插入!\n");
return 1;
}
if(i<1||i>L->last+1)
{
printf("插入位置无效!\n");
return 2;
}
for(j=L->last;j>=i;j--)
{
L->data[j+1]=L->data[j];
}
L->data[i]=x;
L->last++;
return 0;
}
/*************线性表的查找**********************/
int Seqlist_check(Seqlist *L,int num) //按序号查找
{
if(L->last==0)
{
printf("线性表不存在!\n");
return 1;
}
if(num<1||num>L->last)
{
printf("查询位置无效,请重新查询!\n");
return 2;
}
while(L->last!=num)
{
L->last++;
}
printf("序号为:%d 数据为:%d\n",L->last,L->data[num]);
return 0;
}
/*************线性表的删除************************/
int Seqlist_delete(Seqlist *L,int num) //按序号删除
{
int j;
if(L->last==0)
{
printf("线性表不存在!\n");
return 1;
}
if(num<1||num>L->last)
{
printf("查询位置无效,请重新查询!\n");
return 2;
}
for(j=num;j<=L->last-1;j++)
{
L->data[j]=L->data[j+1];
}
L->last--;
return 0;
}在这里插入代码片