11.21-学习笔记
#include<stdio.h>
#include<stdlib.h>
#define MaxSIZE 100
#define ElemType int
//定义一个顺序表
typedef struct{
ElemType data[MaxSIZE];//顺序表的元素
int length;//顺序表的长度
}seqlist,*list;
//顺序表的创建
list creatlist(seqlist *L)
{
// printf("1.L=%d\n",L);
seqlist* s;
s=L;
int e;
int i=0;
while(1)
{
printf("请输入要创建的元素:\n");
scanf("%d",&e);
if(e!=9999)
{
s->data[i++]=e;
s->length++;
}
else
break;
}
// printf("2.L=%d\n",L);
return L;
}
void print(seqlist* L)
{
int i;
printf("当前顺序表为:");
for(i=0;i<L->length;i++)
{
printf("%d",L->data[i]);
}
}
list insert(seqlist *sq)//x为位置,t为data
{
int x,t;
printf("请输入要插入的位置:\n");
scanf("%d",&x);
printf("请输入要插入的元素:\n");
scanf("%d",&t);
seqlist* L;
L=sq;
if(sq->length>MaxSIZE){//表满无法插入
printf("表满\n");
exit(0);
}
if(x<0||x>sq->length+1)
{
printf("插入位置不合格\n");
exit(0);
}
int j=sq->length;
for(j;j>=x;j--)//插入往后移动一个元素
{
sq->data[j]=sq->data[j-1];
}
sq->data[x-1]=t;
sq->length++;
return L;
}
list del(seqlist *sq)
{ int i;
seqlist* L;
L=sq;
printf("请输入要删除的位置:\n");
scanf("%d",&i);
if(i<0||i>sq->length+1)
{
printf("删除位置错误咯\n");
exit(0);
}
for(i;i<sq->length;i++)
{
sq->data[i-1]=sq->data[i];
}
sq->length--;
return L;
}
list locate(seqlist *sq)
{//对于查找,依次遍历
seqlist* L;
L=sq;
int i;
printf("请输入要查找的元素:\n");
scanf("%d",&i);
for (int s=0;s<sq->length;s++)
{
if(sq->data[s]==i)
{
printf("找到了,在位置为%d\n",s+1);
break;
}
}
return L;
}
list revser(seqlist *sq)
{//逆置
seqlist* L;
L=sq;
int temp;
int j=0;
int i;
for (i=0;i<sq->length-1-j;i++)
{
temp=sq->data[sq->length-1-j];
sq->data[sq->length-1-j]=sq->data[i];
sq->data[i]=temp;
j++;
}
return L;
}
void menu()
{
printf("\n********1.创建 2.插入*********\n");
printf("********3.删除 4.查找*********\n");
printf("********5.倒置 \n");
printf("********6.输出 \n");
printf("********7.退出 *********\n");
}
int main()
{
seqlist* L;
int choice;
// seqlist* s;
L=(seqlist *)malloc(sizeof(seqlist));
L->length=0;
// s=creatlist(L);
// printf("s=%d\n",s);
// print(s);
// insert(s);
// print(s);
// del(s);
/// print(s);
// locate(s);
// revser(s);
// print(s);
while (1)
{
menu();
printf("请输入菜单序号:\n");
scanf("%d", &choice);
switch (choice)
{
case 1:creatlist(L);break;
case 2:{
insert(L);
print(L);
break;
}
case 3:{
del(L);
print(L);
break;
}
case 4:locate(L); break;
case 5:{
revser(L);
print(L);
break;
}
case 6:print(L); break;
case 7:exit(0);
default:printf("输入错误!!!\n");
}
}
return 0;
}