【数据结构】采用数组的形式实现顺序表的建立、插入、删除等操作
发布时间:2020-12-15 06:32:44 所属栏目:安全 来源:网络整理
导读:#includestdio.htypedef int ElemType;typedef int Status;#define Max 100#define ERROR 0#define OVERFLOW -2#define OK 1//存储结构typedef struct {ElemType elem[Max];int length;}SqList;SqList L;//初始化void InitSqList(int size){int i;int x;L.le
#include<stdio.h>
typedef int ElemType;
typedef int Status;
#define Max 100
#define ERROR 0
#define OVERFLOW -2
#define OK 1
//存储结构
typedef struct {
ElemType elem[Max];
int length;
}SqList;
SqList L;
//初始化
void InitSqList(int size){
int i;
int x;
L.length = size;
for(i=0;i<size;i++){
printf("请输入顺序表中第%d的元素:",i+1);
scanf("%d",&x);
L.elem[i] = x;
}
}
//顺序表长度
Status GetLength(SqList &L){
return L.length;
}
//遍历顺序表
void PrintSqList(SqList &L){
printf("顺序表数据如下:n");
for(int i=0;i<L.length;i++){
printf("%4d",L.elem[i]);
}
printf("n");
}
//在顺序表中插入元素
Status InsertSqList(SqList &L,int i,ElemType e){
//判断i的位置是否合法
if(i<1 || i>L.length)
return ERROR;
//
if(L.length > Max)
return OVERFLOW;
//插入位置i后的数据右移
for(int j = L.length;j >= i;j--){
L.elem[j] = L.elem[j-1];
}
L.elem[j] = e;
//表长加1
L.length++;
return OK;
}
//在顺序表中删除元素
Status DeleteSqList(SqList &L,int i){
//判断i的位置是否合法
if(i<1 || i>L.length)
return ERROR;
//删除位置之后的数据整体左移
for(int j=i;j<=L.length;j++){
L.elem[j-1] = L.elem[j];
}
L.length--;
return OK;
}
//在顺序表中查找i的值
Status LocateSqList(SqList &L,int i){
return L.elem[i-1];
}
//在顺序表中查找数据为x的位置
Status LocateSqList_2(SqList &L,ElemType e){
for(int i=0;i<=L.length;i++){
if(L.elem[i] == e){
return i;
}
}
return -1;
}
void main(){
int i,j,h,k;
int x,y;
printf("请输入你顺序表的长度:");
scanf("%d",&i);
InitSqList(i);
PrintSqList(L);
printf("顺序表的长度:%d",GetLength(L));
printf("n");
printf("请输入你要插入的数据的位置:n");
scanf("%d",&j);
printf("再输入你要插入的数据:n");
scanf("%d",&x);
InsertSqList(L,x);
printf("插入数据之后的顺序表如下:n");
PrintSqList(L);
printf("插入数据之后顺序表的长度:%d",GetLength(L));
printf("n");
printf("请输入你要删除的数据的位置:n");
scanf("%d",&h);
DeleteSqList(L,h);
printf("删除数据之后的顺序表如下:n");
PrintSqList(L);
printf("n");
printf("请输入你要查找数据的位置:n");
scanf("%d",&k);
int value = LocateSqList(L,k);
printf("查找的值为:%dn",value);
printf("请输入你要查找数据的值:n");
scanf("%d",&y);
int lag = LocateSqList_2(L,y);
printf("数据%d的位置为:%dn",y,lag);
printf("n");
}
By Mr.Z (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
