#include<stdio.h> #include<conio.h> #include<stdlib.h> #define MAXLEN 100 typedef int DataType; typedef struct { DataType Data[MAXLEN]; int Length; }SeqList; SeqList L; void InitList(SeqList *L)//初始化 { L->Length=0; } void CreateList(SeqList *L)//创建 { int i,n; printf("\n请输入你要插入的元素个数!\n"); scanf("%d",&n); printf("\n请输入%d个整数\n",n); for(i=0;i<n;i++) scanf("%d",&L->Data[i]); L->Length=i; } void DispList(SeqList *L)//输出 { int i; for(i=0;i<L->Length;i++) printf("%5d",L->Data[i]); printf("\n"); } int DelList(SeqList *L)//删除 { int n; printf("请输入你要删除的元素的位置\n"); scanf("%d",&n); if(L->Length==0) { printf("线性表为空,不能删除\n"); return 0; } else if(n<1||n>L->Length) { printf("输出位置出错,删除失败\n"); return 0; } else { for(n=n-1;n<L->Length;n++) { L->Data[n]=L->Data[n+1]; } L->Length-=1; printf("删除成功!删除后的线性表为:\n"); return 1; } } int Lookup1(SeqList *L)//按值查找 { int i,n,y=0; printf("请输入你要查找的元素\n"); scanf("%d",&n); for(i=0;i<L->Length;i++) { if(n==L->Data[i]) y=1; } if(y==0) { printf("你输入的值不存在于线性表!\n"); return 0; } else { printf("你查找的元素位置为:"); for(i=0;i<L->Length;i++) { if(n==L->Data[i]) printf(" %d",i); } printf("\n"); return 1; } } int Lookup2(SeqList *L)//按位置查找 { int n; printf("请输入你要查找元素的位置\n"); scanf("%d",&n); if(n<1||n>L->Length) { printf("位置出错!\n"); return 0; } else { printf("你查找元素的值为:%d\n",L->Data[n+1]); return 1; } } int Ins(SeqList *L)//插入 { int n,i,num; printf("请输入你要插入的位置\n"); scanf("%d",&n); if(n<1||n>L->Length) { printf("插入位置出错\n"); return 0; } else { printf("请输入你要插入的元素\n"); scanf("%d",&num); if(n==L->Length) { L->Data[n]=num; L->Length++; return 1; } else { for(n-=1,i=L->Length;i>n;i--) L->Data[i]=L->Data[i-1]; L->Data[n]=num; L->Length++; printf("插入元素成功,插入后的线性表为:\n"); return 1; } } } void Menu() { printf("\n 顺序栈的各种操作"); printf("\n=================================="); printf("\n| 1 建立线性表 |"); printf("\n| 2 插入操作 |"); printf("\n| 3 删除操作 |"); printf("\n| 4 按位置查找 |"); printf("\n| 5 按值查找 |"); printf("\n| 6 求线性表长度 |"); printf("\n| 0 返回 |"); printf("\n=================================="); printf("\n请输入菜单号(0~6)"); } main() { int number; char ch='Y'; SeqList L; InitList(&L); while(ch=='Y'||ch=='y') { // system("cls"); Menu(); scanf("%d",&number); getchar(); switch(number) { case 1: CreateList(&L); printf("建立线性表成功\n"); DispList(&L); break; case 2: Ins(&L); if(Ins(&L)) { DispList(&L); } break; case 3: DelList(&L); break; case 4: Lookup2(&L); break; case 5: Lookup1(&L); break; case 6: printf("当前线性表的长度为:%d\n",L.Length); break; case 0: ch='n'; break; default: printf("输入错误,请输入0~6选择!\n"); } } return 0; }
[数据结构]顺序表
猜你喜欢
转载自blog.csdn.net/daisy_fight/article/details/80294311
今日推荐
周排行