求助,,C语言习题答案
一、判断下列叙述的对错。(1)线性表的逻辑顺序与物理顺序总是一致的。(2)线性表的顺序存储表示优于链式存储表示。(3)线性表若采用链式存储表示时所有结点之间的存储单元地址...
一、判断下列叙述的对错。
(1)线性表的逻辑顺序与物理顺序总是一致的。
(2)线性表的顺序存储表示优于链式存储表示。
(3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
(4)二维数组是其数组元素为线性表的线性表。
(5)每种数据结构都应具备三种基本运算:插入、删除和搜索。
二、设单链表中结点的结构为
typedef struct node { file://链表结点定义
ElemType data; file://数据
struct node * Link; file://结点后继指针
} ListNode;
(1)已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作?
A. s->link = p; p->link = s;
B. s->link = p->link; p->link = s;
C. s->link = p->link; p = s;
D. p->link = s; s->link = p;
(2)非空的循环单链表first的尾结点(由p所指向)满足:
A. p->link == NULL;
B. p == NULL;
C. p->link == first;
D. p == first;
三、 单项选择题
1.算法指的是( )
A.计算机程序 B.解决问题的计算方法
C.排序算法 D.解决问题的有限运算序列
2.线性表采用链式存储时,结点的存储地址( )
A.必须是不连续的
B.连续与否均可
C.必须是连续的
D.和头结点的存储地址相连续
3.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为( )
A.O(1) B.O(n) C.O(m) D.O(m+n)
四、阅读下面的算法
LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1: while(p->next) p=p->next;
S2: p->next=q;q->next=NULL;
}
return L;
}
请回答下列问题:
(1)说明语句S1的功能;
(2)说明语句组S2的功能;
(3)设链表表示的线性表为(a1,a2, …,an),写出算法执行后的返回值所表示的线性表。 展开
(1)线性表的逻辑顺序与物理顺序总是一致的。
(2)线性表的顺序存储表示优于链式存储表示。
(3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。
(4)二维数组是其数组元素为线性表的线性表。
(5)每种数据结构都应具备三种基本运算:插入、删除和搜索。
二、设单链表中结点的结构为
typedef struct node { file://链表结点定义
ElemType data; file://数据
struct node * Link; file://结点后继指针
} ListNode;
(1)已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行下列哪一个操作?
A. s->link = p; p->link = s;
B. s->link = p->link; p->link = s;
C. s->link = p->link; p = s;
D. p->link = s; s->link = p;
(2)非空的循环单链表first的尾结点(由p所指向)满足:
A. p->link == NULL;
B. p == NULL;
C. p->link == first;
D. p == first;
三、 单项选择题
1.算法指的是( )
A.计算机程序 B.解决问题的计算方法
C.排序算法 D.解决问题的有限运算序列
2.线性表采用链式存储时,结点的存储地址( )
A.必须是不连续的
B.连续与否均可
C.必须是连续的
D.和头结点的存储地址相连续
3.将长度为n的单链表链接在长度为m的单链表之后的算法的时间复杂度为( )
A.O(1) B.O(n) C.O(m) D.O(m+n)
四、阅读下面的算法
LinkList mynote(LinkList L)
{//L是不带头结点的单链表的头指针
if(L&&L->next){
q=L;L=L->next;p=L;
S1: while(p->next) p=p->next;
S2: p->next=q;q->next=NULL;
}
return L;
}
请回答下列问题:
(1)说明语句S1的功能;
(2)说明语句组S2的功能;
(3)设链表表示的线性表为(a1,a2, …,an),写出算法执行后的返回值所表示的线性表。 展开
5个回答
展开全部
一.
1.错(链表可以不是)
2.错(顺序适合查找较多的数据结构,链表适合插入删除较多的数据结构)
3.错(有可能连续)
4.错(int a[2][3]中,元素为整型)
5.对.
二.
1.B
2.C
三.
1.D
2.D
3.C(这里是要找到长度为m的链表的尾节点)
四.
1.S1语句是让p指向尾节点(因为while退出的条件是p->next,说明此时p->next为空)
2.S2语句是在链表尾插入q(p->next=q),并让q成为链表尾节点(q->next=NULL)
3.(a1,a2,a3,...an,q)
(注,这里的L是不带头节点的单链表,故第一个节点就是该元素的第一个节点)
1.错(链表可以不是)
2.错(顺序适合查找较多的数据结构,链表适合插入删除较多的数据结构)
3.错(有可能连续)
4.错(int a[2][3]中,元素为整型)
5.对.
二.
1.B
2.C
三.
1.D
2.D
3.C(这里是要找到长度为m的链表的尾节点)
四.
1.S1语句是让p指向尾节点(因为while退出的条件是p->next,说明此时p->next为空)
2.S2语句是在链表尾插入q(p->next=q),并让q成为链表尾节点(q->next=NULL)
3.(a1,a2,a3,...an,q)
(注,这里的L是不带头节点的单链表,故第一个节点就是该元素的第一个节点)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
记得有卖习题答案的书,你去买本吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include
"stdio.h"
void
fun(int
a,int
b,long
*c)
{
int
a1[4],k;
a1[0]=a/10;
a1[3]=a-a/10*10;
a1[1]=b/10;
a1[2]=b-b/10*10;
k=a1[0]*1000+a1[1]*100+a1[2]*10+a1[3];
*c=k;
}
main()
{int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
"stdio.h"
void
fun(int
a,int
b,long
*c)
{
int
a1[4],k;
a1[0]=a/10;
a1[3]=a-a/10*10;
a1[1]=b/10;
a1[2]=b-b/10*10;
k=a1[0]*1000+a1[1]*100+a1[2]*10+a1[3];
*c=k;
}
main()
{int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>/*你的头文件拼错了*/
#include<math.h>/*这个头文件没有用到*/
void
fun(int
a,int
b,long
*c)
{
*c
=
1000
*
(a
%
10)
+
100
*
(a
/
10)
+
10
*
(b
%
10)
+
b
/
10;
}
main()
{
int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
#include<math.h>/*这个头文件没有用到*/
void
fun(int
a,int
b,long
*c)
{
*c
=
1000
*
(a
%
10)
+
100
*
(a
/
10)
+
10
*
(b
%
10)
+
b
/
10;
}
main()
{
int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
void
fun(int
a,int
b,long
*c)
{
*c=(b%10)+(b/10)*100+(a%10)*10+(a/10)*1000;
}
main()
{
int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
#include<math.h>
void
fun(int
a,int
b,long
*c)
{
*c=(b%10)+(b/10)*100+(a%10)*10+(a/10)*1000;
}
main()
{
int
a,b;
long
c;
clrscr();
printf("Input
a,b:");scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The
result
is:%d\n",c);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询