- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验四线性表的链式存储实验
实验四 线性表的链式存储实验
【实验目的】⑴掌握链表的概念,学会对单向链表的插入,删除等操作.
⑵加深对链式存储结构的理解,逐步培养解决实际问题的编程能力.
⑶学会菜单程序的编写。
【实验类型】 验证型+设计型实验。
【实验时间及地点】 2011,10,12。同析楼3幢109室。
【实验说明】
阅读下列实验说明,它能帮助你顺利完成实验。把其中的中文说明注释掉,就是一完整的C程序。
//1.存储结构定义及库文件如下:
#include stdlib.h
#include stdio.h
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
}Node,*LinkList;
//2.以下是菜单选择函数
int menu_select()
{
int sn;
printf(\n);
printf( 主菜单\n);
printf(*********************\n);
printf( 1.单链表的建立\n);
printf( 2.单链表的结点的删除\n);
printf( 3.单链表的输出\n);
printf( 0.退 出 \n);
printf(*********************\n);
printf( 请选择0---3: );
for(;;)
{
scanf(%d,sn);
if(sn0||sn3)
printf(\n\t输入错误,重选?0---3: );
else
break;
}
return sn;
}
void InitList(LinkList *L)
{
*L=(LinkList)malloc(sizeof(Node));
(*L)-next=NULL;
}
/*void InitList(LinkList L)
{
L=(LinkList)malloc(sizeof(Node));
L-next=NULL;
}*/
//3.通过键盘输入链表中元素值,利用头插法建单链表L。
int CreateFromHead(LinkList L)
{
Node *s; int c;
int flag=1;
L-next=NULL;
while(flag)
{
scanf(%d,,c);
if(c!=0)
{
s=(Node *)malloc(sizeof(Node));
s-data=c;
s-next=L-next;
L-next=s;
}
else flag=0;
}
return OK ;
}
//4.在带头结点的单链表L中删除第i个元素。
int DelList(LinkList L,int i)
{
Node *pre,*r;
int k;
pre=L;k=0;
while(pre-next!=NULLki-1)
{
pre=pre-next;
k=k+1;
}
if(!(pre-next))
{
printf(DELETE THE LOCATION IS NOT RIGHTFULL);
return ERROR;
}
r=pre-next;
pre-next=pre-next-next;
free(r);
return ;
}
// 5.输出链表中的值。
void output(LinkList L)
{Node *p;
p=L-next;
while(p!=NULL)
{
printf(%d ,p-data);
p=p-next;
}
return;
}
//6.主控菜单处理调试程序。
void main()
{
LinkList L;
InitList(L);
int i;
for(;;) {
switch(menu_select())
{
case 1:
printf(\n单链表的建立);
printf(请输入链表中结点的值(如:1,2,3,.....10,0 is end): \n);
CreateFromHead(L);
break;
case 2:
printf(链表结点的删除\n);
printf(请输入被删除结点的序号i:);
scanf(%d,i);
DelList(L,i);
p
您可能关注的文档
- 西瓜枯萎病的研究进展及其防治.doc
- 选修4-1第一讲学案.doc
- MULE介绍.ppt
- 东财《施工技术B》在线作业四(随机).doc
- 2009年度全国二级建造师执业资格考试《建设工程施工管理》试卷实务.doc
- JD-40绞车制动力矩验算.doc
- 高一级中期考试数学试题.doc
- 关于永兴河河流调查报告.doc
- 3月份初二语文.doc
- 2011年河北省理科综合模拟试题.doc
- 2024年度党支部、机关党委意识形态工作总结2024年度意识形态工作总结及2025年工作计划.docx
- 2024版房屋市政工程生产安全重大事故隐患判定标准内容解读.pptx
- 2024-2030年中国正庚烷行业需求量预测及未来趋势分析研究报告.docx
- 2024年安徽公共资源交易集团下属子公司招聘笔试参考题库含答案解析.docx
- 2024年吉林长春天然气集团限公司招聘33人高频考题难、易错点模拟试题(共500题)附带答案详解.docx
- 福特APQP和Q1质量管理(PPT-111页).ppt
- 2024-2030年中国割草机行业经营状况分析及未来发展策略分析报告.docx
- 2024年国有企业精神文明建设工作总结.docx
- 2024-2030年中国水利水电工程行业市场发展分析及竞争格局与投资前景研究报告.docx
- 2024年合肥兴泰金融控股(集团)有限公司招聘笔试冲刺题(带答案解析).docx
文档评论(0)