文档详情

实验二链表的基本操作.doc

发布:2016-12-13约3.53千字共7页下载文档
文本预览下载声明
洛阳理工学院实验报告 系部 计算机系 班级 B140502 学号 姓名 韩亚辉 课程名称 数据结构 实验日期 2015-10-13 实验名称 链表的基本操作 成绩 实验目的: (1)掌握线性表的链式存储结构的特点; (2)掌握线性表的基本操作:初始化、插入、删除、查找数据元素等运算在链式存储结构上的实现。 实验条件:计算机一台、Visual C++ 6.0 实验内容与算法思想: 内容: 建立一有序的链表,实现下列操作: 1.把元素x插入表中并保持链表的有序性; 2.查找值为x的元素,若找到将其删除; 3.输出表中各元素的值。 算法思想: 先是创建头指针初始化一个空链表。调用指针创建函数,用头插法把元素输入链表。然后在一个switch函数里面调用函数,选择实现输出、查找、插入和删除等操作。 运行结果:首先在主菜单界面输入0选择初始化建立链表(以$为结尾输入),输入1 2 5 8 9$完成建立链表返回主菜单;选择1进行插入操作,然后输入插入位置3和插入元素4,插入成功,输入y回到主菜单;选择2进行删除操作,输入要删除的元素5,删除成功,输入y返回主菜单;选择3进行链表输出,输出结果1 2 4 8 9,输入y返回主菜单;选择4结束程序。 实验总结: 通过上机实验更加熟练了解有关链表的各种算法,加深了对C语言的了解。基本掌握了基于链表的创建、查找、插入和删除等操作。 附:源程序: #includestdio.h #includemalloc.h #includestdlib.h #define ERROR 1 #define OK 0 typedef char ElemType; typedef struct Node { ElemType data; struct Node * next; }Node,* LinkList; void InitList(LinkList * L) { *L=(LinkList)malloc(sizeof(Node)); (*L)-next=NULL; } void CreateFromTail(LinkList L) { Node *r,*s; int flag=1; ElemType c; r=L; while(flag) { c=getchar(); if(c!=$) { s=(Node *)malloc(sizeof(Node)); s-data=c; r-next=s; r=s; } else { flag=0; r-next=NULL; } } } int InsList(LinkList L,int i,ElemType e) { Node * pre,*s; int k; if(i=0)return ERROR; pre=L; k=0; while(pre!=NULLki) { pre=pre-next; k=k+1; } if(!pre) return ERROR; s=(Node *)malloc(sizeof(Node)); s-data=e; s-next=pre-next; pre-next=s; return OK; } Node * Locate(LinkList L,ElemType key) { void display(); Node *p,*pt; p=L-next; pt=p-next; if(p-data==key) { L-next=pt; free(p); } else while(pt!=NULL) { 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 L; } void display(LinkList L) { Node *p; p=L-next; while(p!=NULL) { printf(%c,p-data); p=p-next; } } int main() { int i,
显示全部
相似文档