顺序表的插入,删除和按值查找
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct
{
int data[MAXSIZE];
int last;
}SeqList;
SeqList *init_SeqList() //顺序表初始化
{
SeqList *L;
L=(SeqList*)malloc(sizeof(SeqList));
L->last=-1;
return L;
}
int Insert_SeqList(SeqList*L,int i,int x) //插入函数
{
int j;
if(L->last==MAXSIZE-1)
{printf("表满\n");return(-1);}
if(i<1||i>L->last+2)
{printf("位置错\n");return(0);}
for(j=L->last;j>=i-1;j--)
L->data[j+1]=L->data[j];
L->data[i-1]=x;
L->last++;
return(1);
}
int delete_SeqList(SeqList *L,int i) //删除函数
{
int j;
if(i<1||i>L->last+1)
{printf("不存在第i个元素");return(0);}
for(j=i;j<=L->last;j++)
L->data[j-1]=L->data[j];
L->last--;
return(1);
}
int Location_SeqList(SeqList *L,int x) //查找函数,按值查找
{
int i=0;
while(i<=L->last&&L->data[i]!=x)
i++;
if(i>L->last) return -1;
else return i;
}
void creat(SeqList *L) //创建顺序表函数,初始化数据
{
int n,i;
printf("顺序表的长度:\n");
scanf("%d",&n);
printf("原来的顺序表所有元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&L->data[i]);
L->last++;
}
}
void print(SeqList *L) //输出函数
{
int i;
printf("之后的顺序表所有元素:\n");
for(i=0;i<=L->last;i++)
printf("%d\t",L->data[i]);
printf("\n");
}
void Insert(SeqList *L) //插入的数据及位置并输出插入后的顺序表
{
int place,flag,x;
printf("输入要插入的位置和元素:\n");
scanf("%d%d",&place,&x);
flag=Insert_SeqList(L,place,x);
if(flag)
print(L);
}
void Delete(SeqList *L) //删除数据及输出删除后的顺序表
{
int place,flag;
printf("输入要删除的位置:\n");
scanf("%d",&place);
flag=delete_SeqList(L,place);
if(flag)
print(L);
}
void Location(SeqList *L) //按值查找并输出
{
int Location_SeqList(SeqList *L,int x);
int number,flag;
printf("要查找的数值:\n");
scanf("%d",&number);
flag=Location_SeqList(L,number);
if(flag)
printf("%d\n",flag);
}
int main()
{
void creat(SeqList *L);
SeqList *L;
int choice;
L=init_SeqList();
creat(L);
printf("选择功能\n");
scanf("%d",&choice);
switch(choice)
{
case 1:Insert(L);break;
case 2:Delete(L);break;
case 3:Location(L);break;
default:printf("错误\n");
}
return 0;
}
开始写数据结构的代码,这不就是c语言中函数,指针和结构体的深入版本嘛😂。
睡觉是一种治愈自己很好的方式,睡着了就会不悲不气,不烦恼不孤单,是上帝赐予你短暂失忆的时间,愿美梦治愈你的难过。祝自己好梦!😴