中南民族大学数据结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

院系:计算机科学学院专业:

年级: 2010级

课程名称:数据结构

学号:

姓名:

指导教师:

2012年 6 月 1日

年级 2010

班号2班学号

专业姓名

实验名称2 单链表的相关操作演示

实验

类型

设计型综合型创新型

实验目的或要求实验目的:

通过上机实践,使学生进一步掌握线性表的逻辑定义、存储结构以及相关应用。实验要求:

自定义存储结构,用C或C++语言编写程序,要求程序模块清晰,菜单界面,有运行结果。

四个题目任选一个写入实验报告。

实验原理(算法流程)1、单链表的相关操作演示:

typedef struct LNode

{

float data;

struct LNode *next;

}LNode,*LinkList;//链表节点的定义

void CreateList_L(LinkList &L,int n){逆序创建一个链表,L为链表的头结点,n为输入的元素的个数}

int Length_LinkList(LinkList L){将链表L中的节点个数输出出来(不包括头结点),返回值为输出的节点数;}

void InsertList_L(LinkList &L,int i,float e){将e插入链表L中的i号位置;核心算法是:现在链表中找到第i-1号位置,然后将要插入的e插到i-1的后面}

void DeleteList_L(LinkList &L,int i,float e){将链表L中的第i号位置的元素e删除;核心算法:从头结点开始往下找,找到第i-1号位置,然后将第i号节点删除,再把后面的节点接上}

void DemandList_L(LinkList &L,int i,float e){查询链表L中的第i号位置的元素e;核心算法:找到第i号位置,然后输出出来}

void OrderList_L(LinkList &L){将链表L中的数据递增排序;核心算法是:新申请一个头结点,将链表L中的元素进行比较,找到最大的元素所在的节点,将它取出来连接到新的头结点的next指针上,然后再找出次大的,再连接到头结点的next指针上,如此循环,直到链表L的next指向空即完成,然后将新的链表的头设置为L,销毁新的头结点指针}

void PrintList_L(LinkList &L) {打印函数,一次将链表L中的内容输出出来}

void delLinkList_L(LinkList &L){释放链表L}

无(

心得体会:

首先我觉得要注意的是创建链表的时候要注意将next指针赋值为空;插入、删除、查询函数关键就是位置的查找,找到后执行相应的操作就可以了,当然还要注意些地方,比如删除不能超出链表的长度,插入不能超出插入的范围等等;其他的一些就是细节上的问题,什么时候用引用传旨,什么时候用形参传值都是要注意的。

教师签名:

2012年月日

备注:源代码附后,源代码要求有注释说明

#include

#include

#include

typedef struct LNode

{

float data;

struct LNode *next;

}LNode,*LinkList;//链表节点的定义

void CreateList_L(LinkList &L,int n)

{//逆序创建一个链表

LinkList p,q;int i;

L=(LinkList)malloc(sizeof(LNode));

L->next=NULL;q=L;

for(i=n;i>0;--i)

{

p=(LinkList)malloc(sizeof(LNode));

cout<<"Please input data:";

cin>>p->data;

cout<

p->next=q->next;

q->next=p;

q=p;

}

}

int Length_LinkList(LinkList L)

{//返回链表的长度的函数

int i;

LinkList p;

p=L;

for(i=0;p->next!=NULL;i++)

p=p->next;

cout<<"Single Length:"<

return i;

}

void InsertList_L(LinkList &L,int i,float e)

{//在链表L第i个位置插入元素e

LinkList p,s;int j,m;

p=L;j=0;

m=Length_LinkList(L);

if(!L->next)

{

cout<<"Error!Nothing!"<

exit(1);

}

else//找到位置i-1,在它的后面插入需要插入的元素

{

if(i>m+1&&i<0)//i要小于链表长度m+1

{

cout<<"Insert Error!"<

exit(1);

}

else//找到第i-1个位置,在后面插入一个元素

{

while(p&&j

{

相关文档
最新文档