数据结构:01顺序表
新手入门如有问题可以交流
编译环境:vscode 如需配置教程请看之前发的视频
简单的顺序表定义`
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
void Display(SqList *L)
{
printf("数组为:");
for(int i=0;i<L->length;i++){
printf("%2d",L->data[i]);
}
printf("\n");
}
void Init(SqList *L){ //初始化
int i=0;
L->length=0;
printf("输入初次加入的元素个数");
scanf("%d",&i);
printf("元素:");
for(int j=0;j<i;j++){
scanf("%d",&L->data[j]);
L->length++;
}
}
int Insert(SqList *L){ //插入元素
int i,e;
printf("请输入位置");
scanf("%d",&i);
printf("请输入元素");
scanf("%d",&e);
if(L->length==MAXSIZE){
printf("数组越界");
return -1;}
if(i<1||i>L->length+1){
printf("位置错误");
return -2;}
for(int j=L->length;j>i-1;j--){
L->data[j]=L->data[j-1];
}
L->data[i-1]=e;
L->length++;
printf("插入成功!");
return 0;
}
int Delete(SqList *L){ //删除
int i;
printf("输入要删除的是第几个元素\n");
scanf("%d",&i);
if(L->length==0){
printf("数组未空\n");
return -2;}
if(i<1||i>L->length){
printf("删除位置错误\n");
return -1;}
for(int j=i-1;j<L->length;j++){
L->data[j-1]=L->data[j];}
L->length--;
printf("删除成功!\n");
return 0;
}
int Location(SqList *L) //按值查找元素位置
{
int e;
printf("输入要查找的元素:");
scanf("%d",&e);
for(int i=0;i<L->length;i++){
if (L->data[i]==e)
{
printf("%d是第%d个元素",e,i+1);
return 0;
}
}
printf("输入的元素有个屁");
return -1;
}
main(){
int s;
SqList L;
Ma:while(1){
printf("输入要进行的操作:\n");
printf("1.------------初始化------------\n");
printf("2.------------插入元素------------\n");
printf("3.------------删除元素------------\n");
printf("4.------------打印数组------------\n");
printf("5.------------查找元素------------\n");
scanf("%d",&s);
switch (s)
{
case 1:Init(&L); Display(&L); goto Ma;
case 2:Insert(&L); Display(&L);goto Ma;
case 3:Delete(&L); Display(&L);goto Ma;
case 4:Display(&L);goto Ma;
case 5:Location(&L);goto Ma;
default:printf("输入错误");goto Ma;
}
system("pause");
return 0;
}
}