单链表.docx

上传人:b****3 文档编号:4465780 上传时间:2022-12-01 格式:DOCX 页数:9 大小:110.04KB
下载 相关 举报
单链表.docx_第1页
第1页 / 共9页
单链表.docx_第2页
第2页 / 共9页
单链表.docx_第3页
第3页 / 共9页
单链表.docx_第4页
第4页 / 共9页
单链表.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

单链表.docx

《单链表.docx》由会员分享,可在线阅读,更多相关《单链表.docx(9页珍藏版)》请在冰豆网上搜索。

单链表.docx

单链表

面向对象程序设计大作业

------单链表

 

学院名称数学与系统科学学院

专业班级统计学12级二班

学生姓名李军

学号201201051509

指导教师孙红梅

 

完成时间:

2014年5月8日

实验题目及要求

1,基本要求

建立一个单链表类,该链表类能够实现以下功能:

(1)有合理的构造函数,能够由用户09输入数据,创建链表,如果用户输入的数据不合理,能够给出提示信息

(2)能够实现单链表元素的遍历

(3)能够在指定位置插入一个元素

(4)能够删除指定位置的元素

(5)能够统计单链表中的元素个数并输出

2.需求分析

建立一个单链表,实现单链表的初始化,插入、删除节点等功能,以及确定某一元素在单链表中的位置。

该系统通过建立一个单链表类实现链表的创建,链表元素的遍历,元素的插入、删除,元素个数的统计。

3.实验步骤

(1)、单链表的存储定义

(2)、从键盘上依次输入21、18、30、75、42、56,逆序创建单链表,并输出单链表中的各元素值。

(3)、分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值。

(4)、删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值。

(5)、取单链表中的第5个数据元素和第7个数据元素

4.使用说明

程序执行后,界面直接输出要求的结果。

5.执行结果

6.源代码

#include

#include

#include

#defineERROR0;

typedefstructLNode

{

intdata;

structLNode*next;

}LNode,*LinkList;

LinkListInitList(LinkListL)

{

LinkListnode=NULL;

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

if(!

node)

{

returnERROR;

}

node->next=NULL;

L=node;

returnL;

}

intListLength(LinkListL)

{

LinkListp=NULL;

intcount=0;

p=L;

while(p->next)

{

count++;

p=p->next;

}

returncount;

}

LinkListCreateList_L(LinkListL,intn)

{

inti;

LinkListp=NULL;

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

{

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

scanf("%d",&p->data);

p->next=L->next;

L->next=p;

}

returnL;

}

LinkListListInsert(LinkListL,inti,inte)

{

intj=0;

LinkLists=NULL,p=NULL;

p=L;

while(p&&j

{

p=p->next;

j++;

}

if(!

p||j>i-1)

{

printf("输入的位置不合法!

\n");

returnL;

}

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

s->data=e;

s->next=p->next;

p->next=s;

returnL;

}

LinkListListDelete(LinkListL,inti)

{

intj;

LinkListq=NULL,p=NULL;

p=L;

j=0;

while(p->next&&j

{

p=p->next;

j++;

}

if(!

(p->next)||j>i-1)

{

printf("输入的位置不合法!

\n");

returnL;

}

q=p->next;

p->next=q->next;

free(q);

returnL;

}

intGetElem(LinkListL,inti)

{

intj,e;

LinkListp=NULL;

if(i<1||i>ListLength(L))

{

printf("输入的位置不合法!

\n");

returnj;

}

p=L->next;

j=1;

while(j

{

p=p->next;

j++;

}

e=p->data;

printf("第%d位的数据元素为%d\n",i,e);

}

voidmenu()

{

printf("*************目录**************\n");

printf("输出单链表中的各元素值1\n");

printf("在单链表中插入数据元素2\n");

printf("在单链表中删除数据元素3\n");

printf("取出单链表中的数据元素4\n");

printf("结束程序0\n");

printf("*******************************\n");

}

voidmain()

{

intn,m,i,e;

LinkListL=NULL,p=NULL;

L=InitList(L);

printf("请输入元素个数:

");

scanf("%d",&n);

printf("依次输入%d个数据元素:

",n);

L=CreateList_L(L,n);

do

{

printf("\n\n");

menu();

printf("请输入你的选择:

");

scanf("%d",&m);

switch(m)

{

case1:

printf("现在链表的元素为:

");

p=L->next;

while(p!

=NULL)

{

printf("%d",p->data);

p=p->next;

}

printf("\n");

break;

case2:

printf("依次输入插入位置和数据元素(空格隔开):

");

scanf("%d%d",&i,&e);

L=ListInsert(L,i,e);

break;

case3:

printf("输入需要删除的元素的位置:

");

scanf("%d",&i);

L=ListDelete(L,i);

break;

case4:

printf("输入需要取出的元素的位置:

");

scanf("%d",&i);

GetElem(L,i);

break;

case0:

printf("已结束程序!

\n");

break;

default:

printf("输入错误!

\n");

}

}while(m!

=0);

}

7.小结

本次试验对所学链表的理论知识进行了实践,加深了对链表的理解,对于链表的基本操作进行了系统的练习。

实验过程中也遇到了很多错误,节点的插入点选择错误,输出链表错误等等,实验的过程就是发现错误、改正错误,并从中学习到新知识的过程。

这次试验我学到的不仅仅是课本上的知识,更重要的是做好一次实验的方法和所必需的耐心与细心。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1