急急,这两个题目到底对不对??递归和链表!!!

flyfoxx 2002-01-16 12:26:18
1. //递归函数dec(int a[ ],int n)判断数组a[ ]的前n个
//元素是否是不递增的,不递增返回1,否则返回0.
//int dec (int a[ ],int n)
{
if (n<=1)_______;
if (a[0]<a[1]) return 0;
return_______;
}




2. //阅读下列函数说明和C代码,将应填入其中______处的字句写在------;
//键表节点类型为:
typedef struct elem
{
int val;
struct elem *next;
}intNode;
//函数merge(int *a,int *b)是将两个升序键表a和b合并成一个升序键表。
intNode *merge(intNode *a,intNode *b)
{
intNode *h=a,*p,*q;
while (b)
{
for(p=h;p&&p->val<b->val;q=p,p=p->next);
if(p==h)
______;
else
______;
q=b;
b=b->next;
_______;
}
return h;
}

对不对???如果对如何填,如果不对如何改????
...全文
213 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnss 2002-01-16
  • 打赏
  • 举报
回复
1. return 1
dec(a + 1, n - 1)
gamcom 2002-01-16
  • 打赏
  • 举报
回复
第二题:
return merge(b, a);
q->next = b;
q->next = p;
zhxx 2002-01-16
  • 打赏
  • 举报
回复
1
tigerxiejiyong 2002-01-16
  • 打赏
  • 举报
回复
第一题:
int dec (int a[ ],int n)
{
if (n<=1) return 1;
if (a[0]<a[1]) return 0;
return dec(a,n-1);
}
题没有错。
bskay 2002-01-16
  • 打赏
  • 举报
回复
for(p=h;p&&p->val<b->val;q=p,p=p->next)后面有;

下面的 又考眼力吗?

mys jl
tpProgramer 2002-01-16
  • 打赏
  • 举报
回复
总结如下:

第一题:

//递归函数dec(int a[ ],int n)判断数组a[ ]的前n个
//元素是否是非严格递减的,非严格递减返回1,否则返回0.
int dec (int a[],int n)
{
if (n<=1)
return 1;
if (a[0] < a[1])
return 0;
return dec(a+1, n-1);
}

第二题:

//键表节点类型为:
typedef struct elem
{
int val;
struct elem *next;
}intNode;

intNode *merge(intNode *a,intNode *b)
{
intNode *h=a,*p,*q;
while (b)
{
for(p=h;p&&p->val<b->val;q=p,p=p->next)
NULL; /////--->此处为我加上的语句 NULL, 本身应该为一个分号,但是极容易看错。
if(p==h)
h=b;
else
p=q;
q=b;
b=b->next;
q->next = p;
}
return h;
}
flyfoxx 2002-01-16
  • 打赏
  • 举报
回复
Yes,所以第一题的题目是有点问题。

谢谢大家了!!!
flyfoxx 2002-01-16
  • 打赏
  • 举报
回复
Yes,所以第一题的题目是有点问题。

谢谢大家了!!!
ustc 2002-01-16
  • 打赏
  • 举报
回复
intNode *merge(intNode *a,intNode *b)
{
intNode *h=a,*p,*q;
while (b)
{
for(p=h;p&&p->val<b->val;q=p,p=p->next); ////!!!!!-->此处是否有分号???
if(p==h)
______;
else
______;
q=b;
b=b->next;
_______;
}
return h;
}
ustc 2002-01-16
  • 打赏
  • 举报
回复
//递归函数dec(int a[ ],int n)判断数组a[ ]的前n个
//元素是否是非严格递减的,非严格递减返回1,否则返回0.
int dec (int a[],int n)
{
if (n<=1)
return 1;
if (a[0] < a[1])
return 0;
return dec(a+1, n-1);
}
tpProgramer 2002-01-16
  • 打赏
  • 举报
回复
回复人: cnss(风) (2002-1-16 0:51:42) 得0分

他的答案是对的啊!!!
tpProgramer 2002-01-16
  • 打赏
  • 举报
回复
回复人: cnss(风) (2002-1-16 0:51:42) 得0分
1. return 1
dec(a + 1, n - 1)

只要改成:
return 0
dec( a+1, n-1)
tpProgramer 2002-01-16
  • 打赏
  • 举报
回复

呵呵, 看懂了!

巧妙的想法。 题目是对的。 我错了。不好意思。

flyfoxx 2002-01-16
  • 打赏
  • 举报
回复
但不满足题意!!!
tpProgramer 2002-01-16
  • 打赏
  • 举报
回复
. //递归函数dec(int a[ ],int n)判断数组a[ ]的前n个
//元素是否是不递增的,不递增返回1,否则返回0.
int dec (int a[ ],int n)
{
if (n<=1)_______;
if (a[0]<a[1]) return 0;
return_______;
}

这个题目有问题, 如果 数组 a 的前两个元素 a[0],a[1]有关系 a[0] < a[1]的话,这个函数总是返回0的!

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧