据
结
构
实
验
报
告
(一)
实验一: 线性表的基本操作
一、实验目的
1.掌握使用Turbo C上机调试线性表的基本方法;
2.掌握顺序表的基本操作:插入、删除运算的实现。
二、实验要求
1、阅读下面的程序,分析各个函数的功能,并输入数据调试。
2、现要删除线性表某位置上的元素,并保持线性表原有的顺序不变,请在给出的程序中加入一个删除函数,实现上述功能要求。ElemType delete_sq(SqList *L, int i)为删除函数的原型,L表示线性表,I表示插入位置。注意菜单中给出了菜单项,请在switch语句给出调用语句,
#include #include #define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType a[MAXSIZE]; int length; }SqList; SqList a,b,c; void creat_list(SqList *L); void out_list(SqList L); void insert_sq(SqList *L,int i,ElemType e); int locat_sq(SqList L,ElemType e); main() { int i,k,loc; ElemType e,x; do { printf("\\n\\n\\n"); printf("\\n 1. creat " ); printf("\\n 2. insert"); printf("\\n 3. delete"); printf("\\n 4. find"); printf("\\n 5. end"); printf("\\n***************"); printf("\\n input:1-5"); scanf("%d",&k); switch(k) { case 1:{ creat_list(&a); out_list(a);} break; case 2:{ printf("\\n i,e=?"); scanf("%d,%d",&i,&e); insert_sq(&a,i,e); out_list(a); } break; case 3:{ printf("\\n i=?"); scanf("%d",&i); DeleteList(&a,i); out_list(a); } break; case 4:{ printf("\\n e=?"); scanf("%d",&e); loc=locat_sq(a,e); if (loc==-1) printf("\\n not find %d",loc); else printf("\\n find weizhi shi %d",loc); } break; } /* switch */ }while(k!=5); printf("\\n byebye"); printf("\\n enter,return");getch(); } void creat_list(SqList *L) { int i; printf("\\n n=?"); scanf("%d",&L->length); for(i=0;i scanf("%d",&(L->a[i])); } } /* creat_list */ void out_list(SqList L) { int i; char ch; printf("\\n"); for(i=0;i<=L.length-1;i++) printf("%10d",L.a[i]); printf("\\n\\n "); getch(); } /* out_list */ void insert_sq(SqList *L,int i,ElemType e) { int j; if(i<1||i>L->length+1){printf("error");}//保证i插入的位置是第一个之前到最后一个之后插入的 L->length++;//L的长度加1 for(j=L->length-1;j>=i-1;j--) L->a[j+1]=L->a[j]; //将第i个元素(包括本身)向后移一位. L->a[i-1]=e;//第i个位置赋上e的值 } /* insert_sq */ int locat_sq(SqList L, ElemType e) { int i=0; while(i<=L.length-1 && L.a[i]!=e) i++; if(i<=L.length-1) return(i+1); else return(-1); }/* locat_sq */ int DeleteList(SqList *L,int i) { int j; if(i<1||i>L->length){printf("error");return -1;}//保证删除的是第一个到最后一个之间的元素 L->length--;//L的长度减1 for(j=i-1;j L->a[j]=L->a[j+1];//将i向后的元素向后移一位 return 1; } 三、实验结果 1﹑查找 2、插入 3、删除