线性表展示代码

  • 数据结构课程的实验代码,本人手打
  • 源代码,如下
      1 #include <stdio.h>
      2 #include<conio.h>
      3 #define MAX 50
      4 
      5 typedef struct Llist{
      6     char adata[MAX];
      7     int len;
      8 }*Node,List;//创建线性表
      9 void init(Node L)
     10 { L->len=0;}//返回线性表长度
     11 
     12 
     13 int Fnode(Node L,int n){
     14     if(n<1||L->len<n){
     15         printf("查找内容不存在\n");
     16         return 0;}
     17     else
     18         return (L->adata[n-1]);
     19 }//取出第n个元素的值
     20 
     21 int addnode(Node L,char x,int n=0){
     22     if(L->len>MAX)
     23         printf("线性表已储存满");
     24     if(n==0)//添加到表尾,输入时使用
     25     {
     26         int len=L->len;
     27         L->adata[len]=x;
     28         L->len++;
     29         return 1;
     30     }
     31     else{
     32         if(n<0||n>L->len+1){
     33             printf("插入位置错误\n");
     34             return 0;
     35         }
     36         else{
     37             for(int j=L->len;j>n-1;j--)
     38                 L->adata[j]=L->adata[j-1];
     39             L->adata[n-1]=x;
     40             ++L->len;
     41             return 1;
     42         }//把数据X插入到第n个位置
     43 
     44     }
     45 
     46 }//插入元素
     47 int delnode(Node L,int n)//删除第n个元素
     48 {
     49     if((n<1)||(n>L->len))
     50     {
     51         printf("输入错误");
     52         return 0;
     53     }
     54     for(int j=n;j<=L->len;j++)
     55         L->adata[j-1]=L->adata[j];
     56     L->len=L->len-1;
     57     return 1;
     58 }
     59 void print(Node L){
     60     for(int i=0;i<(L->len-1);i++)
     61         printf("%c->",L->adata[i]);
     62     printf("%c\n",L->adata[L->len-1]);
     63 
     64 }//输出表的全部元素
     65 void Menu(){
     66     printf("1创建线性表\n2查找元素\n3插入数据\n4删除数据\n0退出\n");
     67     printf("请输入相应的数字:\n");
     68 }
     69 void function1(Node L){
     70     printf("---  1  ---\n请输入你想建立的顺序表的元素,以?结束\n");
     71     L->len=0;
     72     char c=getchar();
     73     while(c!='?'&&c!='')
     74     {
     75         addnode(L,c);
     76         c=getchar();
     77     }
     78     printf("你输入的线性表长度为:%d\n",L->len);
     79     print(L);
     80     fflush(stdin);
     81     printf("-------------1--end\n");
     82 }
     83 int function2(Node L){
     84     printf("---  2  ---\n请输入要查找的序列\n");
     85     int n;
     86     scanf("%d",&n);
     87     char c=Fnode(L,n);
     88     if(c==0){
     89         fflush(stdin);
     90         printf("-------------2--end\n");
     91         return 0;
     92     }
     93     printf("查找完成,第%d位的元素为:\n  %c\n",n,c);
     94     fflush(stdin);
     95     printf("-------------2--end\n");
     96 }
     97 int function3(Node L){
     98     printf("---  3  ---\n请输入要插入的元素:");
     99     char c;
    100     scanf("%c",&c);
    101     printf("请输入要插入的位置:");
    102     int n;
    103     scanf("%d",&n);
    104     if(n==0){
    105         printf("插入位置错误\n");
    106         fflush(stdin);
    107         printf("-------------3--end\n");
    108     return 0;
    109 
    110     }
    111 
    112     if(addnode(L,c,n)==1)
    113     {
    114         printf("添加成功\n当前线性表为:\n");
    115         print(L);
    116     }
    117     fflush(stdin);
    118     printf("-------------3--end\n");
    119 }
    120 void function4(Node L){
    121     printf("---  4  ---\n请输入要删除的序列:\n");
    122     int n;
    123     scanf("%d",&n);
    124     if(delnode(L,n)==0)
    125         printf("error");
    126     else{
    127         printf("删除成功!\n删除后的线性表为:\n");
    128         print(L);
    129     }
    130     fflush(stdin);
    131     printf("-------------4--end\n");
    132 
    133 }
    134 int main(){
    135     int PAR=1;
    136     List L;
    137     Menu();
    138     while(PAR)
    139     {
    140         fflush(stdin);
    141         char ch=getch();
    142         switch(ch)
    143         {
    144             case '1': function1(&L); break;//创建线性表
    145             case '2': function2(&L); break;//查找元素
    146             case '3': function3(&L); break;//插入元素
    147             case '4': function4(&L); break;//删除元素
    148             case '0': return 0;            //退出程序
    149             default:printf("输入错误,请重新输入!!\n");break;
    150         }
    151 
    152     }
    153 
    154 }

     

posted @ 2020-11-30 22:11  wu_yan  阅读(152)  评论(0)    收藏  举报