//线性表 SeqList Sequential List
#include <stdio.h>
#include <stdlib.h>
typedef struct SequentialList{
int *elem;
int length;
int size;
} SqList;
//初始化
SqList InitList(SqList L, int n){
L.elem = new int[n];
if(L.elem==NULL){
printf("NOO");
exit(0);
}
L.length=0;
L.size = n;
return L;
}
//查找
int LocateElem(SqList L,int x){
for(int i=0; i<L.length; i++){
if(L.elem[i]==x){
return i+1;
}
}
return -1;
}
//插入
SqList InsertElem(SqList L, int index, int x){
if(index>L.length+1 || index<1){
printf("插入有问题");
return L;
}
for(int i=L.length-1; i>=index-1; i--){
L.elem[i+1] = L.elem[i];
}
L.elem[index-1] = x;
L.length++;
return L;
}
//删除
SqList DeleteElem(SqList L, int index){
if (index>L.length || index<1) {
printf("被删除元素的位置有误");
exit(0);
}
//删除操作
for (int i=index; i<L.length; i++) {
L.elem[i-1]=L.elem[i];
}
L.length--;
return L;
}
//输出
void Display(SqList L){
for (int i=0; i<L.length; i++) {
printf("%d ",L.elem[i]);
}
printf("\n");
}
int main(int argc, char *argv[])
{
SqList L;
int n;
printf("输入总长度:");
scanf("%d",&n);
L = InitList(L,n);
int x;
printf("输入数字:");
for(int i=1; i<=n; i++){
scanf("%d",&x);
L.elem[i-1] = x;
L.length++;
}
printf("原顺序表:\n");
Display(L);
int d;
printf("删除位置为d:\n");
printf("输入删除的位置:");
scanf("%d",&d);
L=DeleteElem(L, d);
Display(L);
int index;
int k;
printf("在第index的位置插入元素x:\n");
printf("输入index=? x=?");
scanf("%d %d",&index, &k);
L=InsertElem(L, index, k);
Display(L);
int s;
printf("查找元素s的位置:\n");
printf("输入需要查找的元素:");
scanf("%d",&s);
int see=LocateElem(L,s);
printf("%d\n",see);
}
【创】MySequentialList【顺序表】
最新推荐文章于 2023-05-19 20:59:53 发布