- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
洛阳理工学院实验报告
系别 计算机系 班级 学号 姓名 课程名称 数据结构 实验日期 11.7 实验名称 链表的基本操作 成绩 实验目的:
熟悉掌握线性表链式存储结构,掌握与应用查找、插入、删除等基本操作算法,训练和提高结构化程序设计能力及程序调试能力。 实验条件:
计算机一台,Visual C++6.0 实验内容:
问题描述
以单链表为存储结构实现以下基本操作:
在第i个元素前插入一个新元素。
查找值为x的某个元素。若成功,给出x在表中的位置;不成功给出提示信息。
删除第i个元素,若成功,给出提示信息并显示被删元素的值;不成功给出失败的提示信息。
数据结构类型定义
typedef struct LinkNode
{
int Value;
struct LinkNode * Next;
}Node,*LinkList;
模块划分
(1)初始化链表:void InitList(LinkList * L);
(2)创建链表:尾插法:int CreateFromTail(LinkList L);
(3)在指定位置插入元素:int InsList(LinkList L,int i,int e);
(4)在指定位置删除元素:int DelList(LinkList L,int i,int *e);
返回值说明:返回ERROR插入失败,返回OK插入成功;
(5)按位置查找链表元素:int GetList(LinkList L,int i,int *e);
详细设计
void init_linklist(LinkList *l)/*对单链表进行初始化*/{
*l=(LinkList)malloc(sizeof(Node)); /*申请结点空间*/
(*l)-next=NULL; /*置为空表*/
}
void CreateFromHead(LinkList L)
{
Node *s;
char c;
int flag=1;
while(flag) /* flag初值为1,当输入$时,置flag为0,建表结束*/
{
c=getchar();
if(c!=$)
{
s=(Node*)malloc(sizeof(Node)); /*建立新结点s*/
s-data=c;
s-next=L-next;/*将s结点插入表头*/
L-next=s;
}
else
flag=0;
}
}
void CreateFromTail(LinkList L)
{
Node *r, *s;
char c;
int flag =1; /*设置一个标志,初值为1,当输入$时,flag为0,建表结束*/
r=L; /*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
while(flag) /*循环输入表中元素值,将建立新结点s插入表尾*/
{
c=getchar();
if(c!=$)
{
s=(Node*)malloc(sizeof(Node));
s-data=c;
r-next=s;
r=s;
}
else
{
flag=0;
r-next=NULL; /*将最后一个结点的next链域置为空,表示链表的结束*/
}
}
}
Node * Get (LinkList L, int i)
/*在带头结点的单链表L中查找第i个结点,若找到(1≤i≤n),则返回该结点的存储位置; 否则返回NULL*/
{
int j;
Node *p;
p=L;
j=0; /*从头结点开始扫描*/
while ((p-next!=NULL)(ji))
{
p=p-next; /* 扫描下一结点*/
j++; /* 已扫描结点计数器 */
}
if(i == j)
return p; /* 找到了第i个结点 */
else
return NULL; /* 找不到,i≤0或in */
}
Node *Locate( LinkList L,ElemType key)
/*在带头结点的单链表L中查找其结点值等于key的结点,若找到则返回该结点的位置p,否则返回NULL*/
{
Node *p;
p=L-next; /*从表中第一个结点开始 */
while (p!=NULL)
{
if (p-data!=key)
p=p-next;
else
文档评论(0)