文档详情

单链表实验报告单链表实验报告.doc

发布:2018-04-22约4.03千字共9页下载文档
文本预览下载声明
单链表的基本操作 1.实验题目 问题描述:实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本操作。通过代码的编写理解并掌握单链表的过程编写以及作用。(2)输出单链表中的数据元素逻辑结构:线性结构 存储结构:带头结点的单链表 定义结点类型LNode,每个结点包括数据域data和指针域next。定义头指针LinkList。编写如下函数: 1、createlist(LinkList L);用尾插法创建一个带头结点的单链表。 2、print(LinkList L);输出该单链表中的数据元素。 3、ListLength(LinkList L);求该单链表的长度。 4、GetElem(LinkList L,int i,ElemType e);查找第i个元素。 5、SetElem(LinkList L,int i,ElemType m);修改第i个元素。 6、ListInsert (LinkList L, int i, ElemType e );在第i个元素前插入一个元素。7、ListDelete(LinkList L,int i,ElemType e2);删除第i个元素。 8、main();通过case结构来调用createlist(LinkList L)、GetElem(LinkList L,int i,ElemType e)、SetElem(LinkList L,int i,ElemType m)、ListInsert (LinkList L, int i, ElemType e )、ListDelete(LinkList L,int i,ElemType e2) 经过多次调试,本程序能很好的完成实验要求的各项功能。 #includestdio.h #includeconio.h #includestdafx.h #define OK 1 #define ERROR 0 typedef char ElemType; typedef int Status; typedef struct LNode { ElemType data; LNode *next; } LNode,*LinkList; Status createlist(LinkList L) //尾插法创建带头结点的单链表 { int ch; L=new LNode; L-next=NULL; printf(请输入单链表中的数据:); scanf(%d, ch); LinkList r=L; while(ch!=0) { LinkList p=new LNode; p-data=ch; p-next=NULL; r-next=p; r=p; scanf(%d, ch); } return OK; } void print(LinkList L) //输出单链表 { LinkList p=L-next; printf(单链表为:\n); while(p) { printf(%2d,p-data); p=p-next; }} Status ListLength(LinkList L) //求单链表的长度 { int k=0; LinkList p=L-next; while(p){ k++; p=p-next;} printf(\n); printf(单链表的长度为 %d: , k); printf(\n); return k; } Status GetElem(LinkList L,int i,ElemType e) { LinkList p=new LNode; p=L-next; int j=1; while(pji) { p=p-next;j++; } //顺指针向后查找,直至p指到第i个结点或p为空止 if(!p||ji) return ERROR; //第i个结点不存在 e=p-data; printf(第%2d个元素为:%2d\n ,i,e); printf(\n); return OK;} Status SetElem(LinkList L,int i,ElemType m) { LinkList p=new LNode; p=L-next; int j=1; while(pji) { p=p-next;j++; } //顺指针向后查找,直至p指到第i个结点或p为空止 if(!p||ji) return ERR
显示全部
相似文档