1、9)上实验课前,要求每个同学基本写好程序,并存储在自己的U盘上,用于实验课堂操作时调试和运行。2实验内容或题目(在一个主程序中实现全部题目内容)一、顺序表的基本操作实现实验要求:数据元素类型ElemType取整型int。按照顺序存储结构实现如下算法:1)创建任意整数线性表(即线性表的元素值随机在键盘上输入)的顺序存储结构(即顺序表),长度限定在25之内;2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值);3)在顺序表中查找第i个元素,并返回其值;4)在顺序表第i个元素之前插入一已知元素;5)在顺序表中删除第i个元素;6)求顺序表中所有元素值(整数)之和;二、链表(带头结点)基本操作实
2、验数据元素类型ElemType取字符型char。按照动态单链表结构实现如下算法:1)按照头插法或尾插法创建一个带头结点的字符型单链表(链表的字符元素从键盘输入),长度限定在10之内;2)打印(遍历)该链表(依次打印出表中元素值,注意字符的输入顺序与链表的结点顺序);3)在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE;4)在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE;5)在链表中第i个结点之前插入一个新结点;6)在线性表中删除第i个结点;7)计算链表的长度。3实验步骤与源程序#includestdio.hstdlib.hmalloc.h#def
3、ine OK 1#define ERROR 0#define TURE 1#define FALSE 0#define ElemType int#define MAXSIZE 25typedef struct ElemType elemMAXSIZE; int last;SeqList;int GetData(SeqList *L,int i) return L-elemi-1;int InsList(SeqList *L,int i,ElemType e) int k; if(iL-last+2) printf(插入位置i值不合法!); return(ERROR); if(L-last=MA
4、XSIZE-1)超出了链表的最大范围,无法插入无法插入! for(k=L-last;k=i-1;k-) L-elemk+1=L-elemk; L-elemi-1=e;last+; return(OK);int DelList(SeqList *L,int i,ElemType *e)last+1)删除位置不在表中,不合法! *e=L- for(k=i;kk+)elemk-1=L-last-;int SumList(SeqList *L) int sum=0; for(int i=0;ielemi; return(sum);void main() SeqList *l; int p; /要查找的
5、位置 int *q; int r; /线性表的长度 int t; /插入的元素 int s; /删除的位置 int w; /要插入的位置 int i; l=(SeqList *)malloc(sizeof(SeqList); q=(int*)malloc(sizeof(int); printf(请输入线性表的长度: scanf(%d,&r); l-last=r-1;请输入线性表中的各元素值:n for(i=0;=l- scanf(l-elemi);线性表中所有元素之和是:%dn,SumList(l);请输入要查找的位置: p);查找的元素是:,GetData(l,p);请输入要插入的位置:w)
6、;插入的元素是: t); InsList(l,p,t);插入后的线性表:%d ,l-请输入要删除的位置:s); DelList(l,s,q);删除的元素值是:,*q);删除后的线性表:/ 数据结构第二题.cpp : Defines the entry point for the console application./#include stdlib.hmalloc.htypedef char ElemType;typedef struct Node ElemType data; struct Node*next;Node,*LinkList;void CreateTail(LinkList
7、L);int DelList(LinkList L,int i,ElemType e);void Get(LinkList L,int i);void InitList(LinkList *l);int InsList(LinkList L,int i,ElemType e);int ListLength(LinkList L);void Locate(LinkList L,ElemType e); LinkList k; int m; /要查找的序号 int n; / 要删除的位置 char a; /要查找的元素 InitList(&k); Node *p; p=k-next;用尾插法建立单
8、链表,请输入链表数据,以$结束! CreateTail(k); while(p!=NULL)%cn,p-data); p=p-请输入要查找的序号:m);查找到的元素是: Get(k,m);n请输入要查找的元素: %ca); Locate(k,a);n请输入要插入的位置:n); InsList(k,n,a);插入后的链表是:%c n请输入要删除的位置: DelList(k,t,a);删除的元素是:,a);%c删除后的链表是:n链表的长度是:,ListLength(k);void InitList(LinkList *k) *k=(LinkList)malloc(sizeof(Node); (*k
9、)-next=NULL;void CreateTail(LinkList L) char c; Node *r,*s; int flag=1; r=L; while(flag) c=getchar(); if(c!=$) s=(Node*)malloc(sizeof(Node); s-data=c; r-next=s; r=s; else flag=0;void Get(LinkList L,int i) int j; p=L;j=0; while(p-next!=NULL&j if(p-data!=e) else break;data=e) TUREint InsList(LinkList
10、L,int i,ElemType e) Node *pre,*s; pre=L;k=0; while(pre!i-1) pre=pre- k=k+1; if(k!=i-1)插入位置不合法! return ERROR; s=(Node*)malloc(sizeof(Node); s-data=e;next=pre- pre- return OK;int DelList(LinkList L,int i,ElemType e) Node *p,*r;删除结点的位置不合法! r=p- p-next=p-next- e=r-data; free(r);int ListLength(LinkList L) int j=0; return j;4测试数据与实验结果(可以抓图粘贴)5结果分析与实验体会此次试验所使用的基本概念为上学期的链表的内容,而链表主要是通过结点等跳来跳去,充分利用空间,而且链表,指针通常搭配使用,这增加了理解上的难度,只要有一错错误,整个程序便会出现错误,所以此次试验尽管题目不难,但写起代码非常麻烦,尤其是c语言学得不好的,更会吃力。