数据结构(第二版)习题答案第3章
数据结构答案
第
3章线性表的链式存储
3.1选择题
(1)两个有序线性表分别具有 n个元素与 m个元素且 n≤m,现将其归并成一个有序表,
其最少的比较次数是( A )。
A.n B.m C.n . 1 D.m + n
(2)非空的循环单链表 head的尾结点(由 p所指向)满足( C)。
A.p->next==NULL B.p==NULL C.p->next==head D.p==head
(3)在带头结点的单链表中查找 x应选择的程序体是( C )。
A.node *p=head->next; while (p && p->info!=x) p=p->next;
if (p->info==x) return p else return NULL;
B.node *p=head; while (p&& p->info!=x) p=p->next; return p;
C.node *p=head->next; while (p&&p->info!=x) p=p->next; return p;
D.node *p=head; while (p->info!=x) p=p->next ; return p;
(4)线性表若采用链式存储结构时,要求内存中可用存储单元的地址( D )。
A.必须是连续的 B.部分地址必须是连续的
C.一定是不连续的 D.连续不连续都可以
(5)在一个具有 n个结点的有序单链表中插入一个新结点并保持单链表仍然有序的时间
复杂度是( B )。
A.O(1) B.O(n) C.O(n2) D.O(nlog2
n)
(6)用不带头结点的单链表存储队列时,其队头指针指向队头结点,其队尾指针指向队
尾结点,则在进行删除操作时( D )。
A.仅修改队头指针 B.仅修改队尾指针
C.队头、队尾指针都要修改 D.队头,队尾指针都可能要修改
(7)若从键盘输入 n个元素,则建立一个有序单向链表的时间复杂度为( B )。
A.O(n) B.O(n2) C.O(n3) D.O(n × log2n)
(8)下面哪个术语与数据的存储结构无关( D )。
A.顺序表 B.链表 C.散列表 D.队列
(9)在一个单链表中,若删除 p所指结点的后续结点,则执行( A )。
A.p->next=p->next->next; B.p=p->next; p->next=p->next->next;
C.p->next=p->next; D.p =p->next->next;
(10)在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( B )。
A.s->next=p;p->next=s; B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s; D.p->next=s;s->next=p;
3.2设计一个算法,求一个单链表中的结点个数。
【答】:单链表存储结构定义如下(相关文件: linklist.h)
#include <stdlib.h>
#include <stdio.h>
typedef struct node
{ int data;
struct node *next;
}linknode;
typedef linknode *linklist;
/*尾插法创建带头结点的单链表
*/
linklist creatlinklist()
{ linklist head,r,x,s;
head=r=(linklist)malloc(sizeof(linknode));
printf("\n请输入一组以
0结束的整数序列:
\n");
scanf("%d",&x);
while (x)
{ s=(linklist)malloc(sizeof(linknode));
s->data=x;
r->next=s;
r=s;
scanf("%d"
,&x);
}
r->next=NULL;
return head;
}
/*输出带头结点的单链表
*/
void print(linklist head)
{ linklist p;
p=head->next;
数据结构答案
printf("List is:\n");
while(p)
{ printf("%5d",p->data);
p=p->next;
}
printf("\n");
}
基于上述结构定义,求单链表中的结点个数的算法程序如下:
int count(linklist head)
{
int c=0;
linklist p=head;
while (p)
{c++;
p=p->next;
}
return c;
}
3.3设计一个算法,求一个带头结点单链表中的结点个数。
【答】:带头结点的单链表的存储结构定义同题
3.2,实现本题功能的算法程序如下(
3_3.c)
#include "linklist.h"
int count(linklist head)
{ int c=0;
linklist p=head->next;
while (p)
{c++;
p=p->next;
}
return c;
}
main() /*测试函数*/
{linklist head;
head=creatlinklist();
print(head);
printf("\nLength of head is:%d",count(head));
getch();
}
当输入
5个数据时,产生的输出结果如下图所示:
3.4设计一个算法,在一个单链表中值为
y的结点前面插入一个值为
x的结点。即使值为
x的
新结点成为值为
y的结点的前驱结点。
【答】:
#include "linklist.h"
void insert(linklist head,int y,int x)
{/*在值为
y的结点前插入一个值为
x的结点*/
linklist pre,p,s;
pre=head;
p=head->next;
while (p && p->data!=y)
{ pre=p;
p=p->next;
}
if (p)/*找到了值为
y的结点*/
{ s=(linklist)malloc(sizeof(linknode));
s->data=x;
s->next=p;
pre->next=s;
}
}
void main() /*测试程序*/
{linklist head;
int y,x;
head=creatlinklist(); /*创建单链表*/
print(head); /*输出单链表*/
printf("\n请输入
y与
x的值:\n");
scanf("%d %d",&y,&x);
insert(head,y,x);
print(head);
}
程序的一种运行结果如下图所示:
3.5设计一个算法,判断一个单链表中各个结点值是否有序。
【答】:
#include "linklist.h"
int issorted(linklist head,char c)
/*当参数
c=’a’时判断链表是否为升序,当参数
c=’d’是判断链表是否为降序*/
{ int flag=1;
linklist p=head->next;
switch (c)
{case 'a':/*判断带头结点的单链表
head是否为升序
*/
while (p &&p->next && flag)
{if (p->data<=p->next->data) p=p->next;
else flag=0;
}
break;
case 'd':/*判断带头结点的单链表
head是否为降序
*/
while (p &&p->next && flag)
{if (p->data>=p->next->data) p=p->next;
else flag=0;
…… 此处隐藏:2396字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [求职职场]加法运算定律的运用练习题
- [求职职场]大型石油化工工业过程节能新技术
- [求职职场]2015-2020年中国箱纸板行业分析与投资
- [求职职场]NADEX-IWC5A点焊机故障代码
- [求职职场]英语阅读 非常有用
- [求职职场]鲁卫疾控发〔2012〕2号(联合,印发山东
- [求职职场]2014年莆田公务员行测技巧:数字推理的
- [求职职场]基于最近发展区理论的高中数学课堂有效
- [求职职场]与贸易有关的知识产权协议
- [求职职场]【王风范】微演说·职场演说三
- [求职职场]新时代国珍健康大课堂
- [求职职场]群论期末考试复习题
- [求职职场]施工现场消防安全专项施工方案(范本)-
- [求职职场]初中物理光学知识点归纳完美版
- [求职职场]毕业设计总结与体会范文
- [求职职场]江南大学2018年上半年展示设计第1阶段
- [求职职场]景尚乡民兵参战支前保障方案
- [求职职场]【优质】2019年工会职工之家建设工作总
- [求职职场]数据库技术与应用—SQL Server 2008(第
- [求职职场]汽车变速箱构造与工作原理
- 首钢工业区工业遗产资源保护与再利用研
- 第4课 《大学》节选
- 2016程序文件——检验检测结果发布程序
- 2011年高考试题文言文阅读全解释__2011
- 化学是一门基础的自然科学
- 海外做市商制度的借鉴意义
- 外国建筑史复习资料(
- 七年级下思想品德期末综合测试(二)
- 思政课部2013年上学期教学工作总结
- 电大国际公法任务3 0004
- 《圆的认识》教学设计
- 中国轨道交通牵引变流器行业市场发展调
- 中泰证券#定期报告:坚守时代硬科技和
- 浅论企业财务管理与企业经营投资风险的
- 大功率半导体激光器光纤耦合技术调研报
- 中国传统家具的现状与发展探讨
- Broadcom数字电视芯片助海尔扩展高清电
- 新HSK4词汇练习 超全(五)
- 2013届高考数学单元考点复习12
- 雨霖铃精品课件




