#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("查找的值为:%d\n",value); printf("请输入你要查找数据的值:\n"); scanf("%d",&y); int lag = Locatesqlist_2(L,y); printf("数据%d的位置为:%d\n",y,lag); printf("\n"); }
By Mr.Z
原文链接:https://www.f2er.com/datastructure/383220.html