创建一个顺序表(数据元素个数为5),
输出顺序表中的所有数据元素
查找第3个位置上的元素
查找元素15是否在顺序表中,如果在,请输出该元素在顺序表中的位置
在顺序表中的第1个位置插入数据0
删除刚刚插入的元素
输出顺序表中的所有数据元素
#include <stdio.h>
#define MAXSIZE 100
typedef struct {int elem[MAXSIZE];int last;
} SeqList;
void InitList(SeqList*L) {L->last=-1;
}
void CreateList(SeqList*L,int n) {int i;printf("请输入%d个整数: ",n);for(i=0; i<n; i++)scanf("%d",&L->elem[i]);L->last=i-1;
}
int GetData(SeqList*L,int i,int*x) {if(i<1||i>L->last+1)return 0;else {*x=L->elem[i-1];return 1;}
}
int Locate(SeqList*L,int e) {int i=0;while(i<=L->last&&L->elem[i]!=e);i++;if(i>L->last)return 0;elsereturn i+1;
}
int InsList(SeqList*L,int i,int e) {int j;if(L->last>=MAXSIZE-1) {printf("顺序表已满");return -1;}if(i<1||i>L->last+2) {printf("插入位置出错");return 0;}for(j=L->last; j>=i-1; j--)L->elem[j+1]=L->elem[j];L->elem[i-1]=e;L->last++;return 1;
}int DelElem(SeqList*L,int i,int*e) {int j;if(L->last==-1) {printf("顺序表为空");return 0;}if(i<1||i>L->last+1) {printf("不存在第i个元素");return 0;}*e=L->elem[i-1];for(j=i; j<=L->last; j++)L->elem[j-1]=L->elem[j];L->last--;return 1;
}void DispList(SeqList*L) {int i;for(i=0; i<=L->last; i++)printf("%5d",L->elem[i]);
}int main() {SeqList L;int n,i,x,loc;printf("请输入建立线性表的个数: ");scanf("%d",&n);CreateList(&L,n);printf("建立的线性表为: ");DispList(&L);printf("请输入要查看表中位置: ");scanf("%d",&i);if(GetData(&L,i,&x))printf("当前线性表第%d个元素的值为:%d\n",i,x);elseprintf("输入的位置错误");printf("请输入要查找的元素值为:");scanf("%d",&x);loc=Locate(&L,x);if(loc)printf("查找元素值为%d的位置为:%d\n",x,loc);elseprintf("该表中无此元素");printf("请输入要插入的位置:");scanf("%d",&i);printf("请输入要插入的元素值:");scanf("%d",&x);if(InsList(&L,i,x)) {printf("已成功在第%d的位置上插入%d,插入后的线性表为:\n",i,x);DispList(&L);} elseprintf("输入插入的参数错误");printf("请输入要删除元素的位置:");scanf("%d",&i);if(DelElem(&L,i,&x)) {printf("已成功在第%d的位置上删除%d,删除后的线性表为:\n",i,x);DispList(&L);} elseprintf("\n输入删除的参数错误");
}
运行结果如下