实验二链表的建立和基本运算Word文档下载推荐.docx
- 文档编号:18711401
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:10
- 大小:17.76KB
实验二链表的建立和基本运算Word文档下载推荐.docx
《实验二链表的建立和基本运算Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验二链表的建立和基本运算Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
为了参数的传递方便,可以把指向链表的表头指针设定为全局变量。
(4)算法实现——示例程序
#include"
stdafx.h"
#include<
malloc.h>
//malloc()等
stdio.h>
//NULL,printf()等
process.h>
//exit()
#definenull0;
typedefintElemType;
typedefstructnode
{
ElemTypedata;
/*数据域*/
structnode*next;
/*指针域*/
}Lnode;
/*定义基本线性表的结点结构*/
Lnode*head;
/*定义基本线性表的表头指针为全局变量*/
intlength(Lnode*p)/*求指针p指向的基本线性表的长度*/
intn=0;
/*结点位置计数器*/
Lnode*q=p;
/*定义临时指针q*/
while(q)/*当基本线性表不空时,统计基本线性表中的结点数*/
{
n++;
q=q->
next;
}
return(n);
/*返回统计的结点数*/
}
ElemTypeget(Lnode*p,inti)
/*求指针p指向的基本线性表中第i个结点的值*/
intj=1;
/*查找结点位置的计数器*/
while(j<
i&
&
q)/*查找结点i是否存在*/
j++;
if(q)/*如果存在,返回其数据域的值*/
return(q->
data);
else/*否则,输出其位置参数不正确*/
printf("
位置参数不正确!
\n"
);
intLocate(Lnode*p,ElemTypex)
/*求指针p指向的基本线性表中的数据元素X的位置序号*/
/*结点位置计数器*/
while(q&
q->
data!
=x)
/*在基本线性表中查找数据元素x的位置*/
{q=q->
if(q)/*如果不存在,则返回-1*/
return(-1);
else/*否则,返回结点的位置序号*/
return(n+1);
voidinsert(ElemTypex,inti)
/*在基本线性表的的位置i,插入数据元素*/
Lnode*s,*q;
/*定义临时指针s,q*/
s=(Lnode*)malloc(sizeof(Lnode));
/*生成新结点*/
s->
data=x;
/*将新结点的数据域置为x*/
q=head;
if(i==1)/*如果插入位置是1,则将新结点插入到表头*/
next=q;
head=s;
}
else/*否则,查找插入位置*/
while((j<
i-1)&
(q->
next))
{
q=q->
j++;
}
if(j==i-1)
s->
next=q->
q->
next=s;
else/*插入位置不存在*/
printf("
voiddeletex(Lnode*p,inti)
/*将指针p指向的基本线性表中的位置i的数据元素删除*/
Lnode*q=p,*t;
if(i==1)
/*如果位置序号为1,则将基本线性表的第1个数据元素结点删除*/
t=q;
p=q->
else/*否则,从表头查找相应的位置序号i*/
if(q->
next&
j==i-1)
/*如果找到位置i,则将该位置的结点删除*/
t=q->
q->
next=t->
else/*否则位置i不存在*/
if(t)
free(t);
voiddisplay(Lnode*p)
Lnode*q;
q=p;
单链表显示:
"
if(q)
链表为空"
elseif(q->
next)
%d\n"
q->
else
while(q->
{
%d->
voidmain()
intd,i,n,select,k,flag=1;
head=null;
printf("
请输入数据长度:
scanf("
%d"
&
n);
for(i=1;
i<
=n;
i++)
将数据到插入到链表中:
insert(d,i);
display(head);
printf("
while(flag)
1---------求长度\n"
2---------取结点\n"
3-------求值查找\n"
4--------增加结点\n"
5--------删除结点\n"
6--------退出\n"
inputyourselect:
select);
switch(select)
case1:
d=length(head);
\n单链表的长度为:
d);
display(head);
break;
case2:
\n请输入取得结点的位置:
d);
k=get(head,d);
k);
case3:
\n请输入要查找的数据:
k=Locate(head,d);
case4:
\n请输入增加结点的位置:
k);
\n请输入增加结点的数据:
insert(d,k);
case5:
\n请输入删除结点的位置:
deletex(head,d);
case6:
flag=0;
2、求集合的并、交和差集
求出任意两个正整数集合的的交、并和差集。
程序运行后显现提示信息,由用户输入两组整数分别作为两个集合的元素。
程序将自动滤去由程序计算它们的交、并和差集,并将运算结果输出。
3、火车票销售
试编制一个简单的火车票销售系统,可完成售票、退票、车票剩余情况查询等功能。
每张车票包含车次、座位信息。
在售票、退票、查询剩余票等环节中,都必须显示出车票的信息,即车次、座位情况。
为简单起见,在此假设所有出售的车票均为同一车次的车票。
退票时,必须是车站售出的列车票才能退,否则视为无效票,不能办理退票业务。
四、实验要求
1、认真阅读和掌握、上机调试并运行实验内容1的程序;
保存和打印出程序的运行结果,并结合程序进行分析。
2、用C/C++完成实验内容2、3的算法设计和程序设计并上机调试通过。
要求:
(1)给出程序设计的基本思想、原理和算法描述。
(2)对源程序给出注释。
(3)保存和打印出程序的运行结果,并结合程序进行分析。
3、撰写实验报告,提供实验结果和数据。
仅供个人用于学习、研究;
不得用于商业用途。
notforcommercialuse.
Nurfü
rdenpersö
nlichenfü
rStudien,Forschung,zukommerziellenZweckenverwendetwerden.
Pourl'
é
tudeetlarechercheuniquementà
desfinspersonnelles;
pasà
desfinscommerciales.
толькодлялюдей,которыеиспользуютсядляобучения,исследованийинедолжныиспользоватьсявкоммерческихцелях.
以下无正文
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 链表的建立和基本运算 实验 建立 基本 运算
![提示](https://static.bdocx.com/images/bang_tan.gif)