#include <stdio.h> #include <stdlib.h> #define OK 1 #define ERR 0 #define MAXSIZE 100 //定义顺序存储结构
typedef struct list{ int elem[MAXSIZE]; int last; }SeqList;
//初始化线性表 SeqList *InitList() { SeqList *L; L = (SeqList *)malloc(sizeof(SeqList)); L->last = 0; return L; }
//查找操作,按内容查找 int Locate(SeqList *L,int e) { int i=0; for (i;i<L->last-1;i++) { if (L->elem[i]==e) { return i+1; } } return -1; }
//插入操作.在表的第i个位置前插入一个新元素
int InsList(SeqList *L,int i,int e) { int k; if (i<1||i>L->last+1) { printf("插入位置不合法!"); return ERR; } if (L->last>=MAXSIZE) { printf("表已满,无法插入!"); return ERR; } for (k=L->last-1;k>=i;k--) { L->elem[k+1]=L->elem[k]; } L->elem[i-1]=e; L->last++; return OK; }
//删除表的第i个元素,并且用指针e返回其值 int DelList(SeqList *L,int i,int *e) { int k; if (i<1||i>L->last) { printf("删除位置不合法!"); return ERR; } *e=L->elem[i-1]; for (k=i-1;k<L->last;k++) { L->elem[k]=L->elem[k+1]; } L->last--; return OK; } //线性表的输出 void print_seqList(SeqList *L) { int j; for (j=1;j<=L->last;j++) { printf("%d\t",L->elem[j-1]); if (j%5==0) { printf("\n"); } } } int main() {
SeqList *L; L=InitList(); int a,j,locate,e; for (j=1;j<10;j++) { printf("请输入要插入的数字:\n"); scanf("%d",&a); InsList(L,a,j); } printf("\n"); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("插入后的列表为:\n"); print_seqList(L); printf("\n"); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("查找元素5是否存在,显示下标:\n"); locate = Locate(L,5); printf("%d\n",locate); printf("————————————————————:\n"); printf("————————————————————:\n"); printf("删除第7个元素,返回被删除的元素:\n"); DelList(L,7,&e); printf("被删除的元素是:%d\n",e); return 0; }