- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构上机实验报告
PAGE 4
数据结构上机实验
姓名:
学号:
院系:
指导教师:
数据结构上机实验报告
实验一 线性表
实验目的
熟悉线性表的顺序和链式存储结构
掌握线性表的基本运算
能够利用线性表的基本运算完成线性表应用的运算
二、实验内容
设有一个线性表E={e1, e2, … , en-1, en},设计一个算法,将线性表逆置,即使元素排列次序颠倒过来,成为逆线性表E’={ en , en-1 , … , e2 , e1 },要求逆线性表占用原线性表空间,并且用顺序表和单链表两种方法表示,分别用两个程序来完成。
已知由不具有头结点的单链表表示的线性表中,含有三类字符的数据元素(字母、数字和其他字符),试编写算法构造三个以循环链表表示的线性表,使每个表中只含有同一类的字符,且利用原表中的结点空间,头结点可另辟空间。
三、代码
1、(1)顺序表逆置
void invert(sequenlist*L)
{
int iLen=L-last-1;
datatype str;
for (int i=0;iiLen/2;i++)
{
str=L-data[i];
L-data[i]=L-data[iLen-i];
L-data[iLen-i]=str;
}
}
(2)单链表逆置
void invert(linklist*head)
{
linklist *p,*q,*l;
q=head-next;
p=q-next;
while (p!=NULL)
{
l=p-next;
p-next=q;
q=p;
p=l;
}
head-next-next=NULL;
head-next=q;
}
2、
void resolve(linklist *head,linklist *letter,linklist *digit,linklist *other)
{
linklist *l,*p;
l=head-next;
char str;
while (l)
{
p=l;
str=p-data;
l=l-next;
if ((str=astr=z)||(str=Astr=Z))
{
insert(letter,p);
}
else if (str=0str=9)
{
insert(digit,p);
}
else{
insert(other,p);
}
}
}
四、运行结果
1、(1)
(2)
2、
实验二 栈和队列
实验目的
熟悉栈和队列的顺序和链式存储结构
掌握栈和队列的基本运算
能够利用栈和队列的基本运算完成栈和队列应用的运算
实验内容
1、设单链表中存放有n个字符,试编写算法,判断该字符串是否有中心对称的关系,例如xyzzyx是中心对称的字符串。(提示:将单链表中的一半字符先依次进栈,然后依次出栈与单链表中的另一半字符进行比较。)(文件夹:习题3)
2、假设以数组sequ[m]存放循环队列的元素,同时设变量rear和quelen 分别指示循环队列中队尾元素的位置和内含元素的个数。编写实现该循环队列的入队和出队操作的算法。提示:队空的条件:sq-quelen==0;队满的条件:sq-quelen==m。(文件夹:习题4)
三、代码
1. int symmetry(linklist *head,stack *s)
{
linklist *r=head;
int iLen=length(r);
int i=0;
while(i++iLen/2)
{
r=r-next;
push(s,r-data);
}
char str;
while(i++iLen)
{
r=r-next;
str=pop(s);
if(str!=r-data)
return 0;
}
return 1;
}
2.
//入队
void enqueue(qu *sq,datatype x)
{
if(sq-quelen=m)
{
sq-quelen++;
sq-rear=(sq-rear+1)%m;
sq-sequ[sq-rear]=x;
cout入队成功!\n;
}
else
{
cout队列已满,请先进行出队操作\n;
}
}
//出队
int* dequeue(qu *sq)
{
if(sq-quelen=0)
{
cout队列为空,请先进行入队操作\n;
return NULL;
}
else
{
// sq-rear=(sq-rear-1+m)%m;
sq-quelen--;
cout出队
您可能关注的文档
最近下载
- 高压除氧器培训课件.ppt VIP
- 最新行政执法题库行政执法试题及答案附答案详解(夺分金卷).docx VIP
- 最新行政执法题库行政执法试题及答案附答案详解(综合卷).docx VIP
- 最新行政执法题库行政执法试题及答案附答案详解(a卷).docx VIP
- 时速160客货共线铁路简支T梁-24m 通桥(2012)2101-II.pdf VIP
- 解密华为人资资源管理题库.docx VIP
- 最新行政执法题库行政执法试题及答案附答案详解(典型题).docx VIP
- 最新行政执法题库行政执法试题及答案附答案详解(基础题).docx VIP
- 大学生职业生涯规划.pdf VIP
- 个人电脑抵押合同4篇.docx VIP
原创力文档


文档评论(0)