线性表展示代码
- 数据结构课程的实验代码,本人手打
- 源代码,如下
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 }
相信奇迹的人,本身和奇迹一样了不起!