《数据结构实验二.doc》由会员分享,可在线阅读,更多相关《数据结构实验二.doc(7页珍藏版)》请在三一文库上搜索。
1、洛阳理工学院实验报告系部计算机系班级学号姓名课程名称数据结构实验日期实验名称链表的基本操作成绩实验目的:(1)掌握线性表的链式存储结构的特点;(2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。实验条件:计算机一台,vc+6.0实验内容与算法思想:内容:建立一有序的链表,实现下列操作:1.把元素x插入表中并保持链表的有序性;2.查找值为x的元素,若找到将其删除;3.输出表中各元素的值。算法思想:先创建并初始化一个顺序表(void init_linklist(LinkList)),通过循环,输入一串数据void CreateFromTail(LinkList
2、 L);创建主函数;编写算法,完成子函数(查找locate,插入insList,删除DelList,输出output)模块;调用子函数,完成实验要求运行结果:实验总结:通过该次实验掌握了线性表的基本操作:插入、删除、查找在顺序存储结构上的实现。更深一步了解到算法在c语言程序中的使用及函数调用的方法。编写过程中出现了比较多的问题,比如排序一直没编好,经过多次修改才运行成功,排序还是c语言的知识,说明对c语言掌握的还不是很好,还需要多加练习。经过这次实验,我觉得我要加倍努力才行,提高自己编写的能力。附:源程序:#include#include#define OK 1#define ERROR 0t
3、ypedef char ElemType;typedef struct NodeElemType data; struct Node* next;Node,*LinkList;void init_linklist(LinkList *l)*l=(LinkList)malloc(sizeof(Node); (*l)-next=NULL; void CreateFromTail(LinkList L)Node *r, *s;char c;int flag =1;r=L; while(flag) c=getchar();if(c!=$)s=(Node*)malloc(sizeof(Node);s-d
4、ata=c;r-next=s;r=s;elseflag=0;r-next=NULL; Node *Locate( LinkList L,ElemType key)int k;Node *p;k=1;p=L-next; while (p!=NULL)if (p-data!=key)p=p-next; k+;else break; printf(查询的元素的位置为:); printf(%dn,k-1);return p; void InsList(LinkList L,int e) LinkList p=L-next,q=L,s; if(p-next=NULL) printf(这是一个空链表n);
5、 else while(p&(p-datanext; if(p&(p-data=e) s=(LinkList)malloc(sizeof(Node); s-data=e; s-next=p; q-next=s; else s=(LinkList)malloc(sizeof(Node); s-data=e; s-next=NULL; q-next=s; int DelList(LinkList L,ElemType key) Node *p,*pt; p=L-next; pt=p-next; if(p-data=key) L-next=pt; free(p); else while(pt!=NU
6、LL) if(pt-data!=key) pt=pt-next; p=p-next; else p-next=pt-next; free(pt); break; if(pt=NULL)printf(无该元素n); else printf(该元素已删除,删除后的排序为:n);return 1; void output(LinkList L)Node *p;p=L-next;while(p!=NULL)printf(%2c,p-data); p=p-next;void main() LinkList L; ElemType m,n,a; init_linklist(&L); printf(请输入您要录入的元素以$结束:n); CreateFromTail(L); output(L); printf(n); printf(请输入您要查询的元素:n); getchar(); n=getchar(); Locate(L,n); printf(请输入您要插入的元素:n); getchar(); m=getchar(); InsList(L, m); output(L); printf(n); printf(请输入您要删除的元素:n); getchar(); a=getchar(); DelList(L,a); output(L); printf(n);