| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 866 人关注过本帖
标题:分别用递归方式和非递归方式实现带头结点单链表的顺序检索 问题是最后的反馈 ...
取消只看楼主 加入收藏
EVNUE
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2023-3-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:0 
分别用递归方式和非递归方式实现带头结点单链表的顺序检索 问题是最后的反馈不正常
#include <stdlib.h>
#include <stdio.h>
typedef int datatype;
typedef struct node
{ datatype data;
  struct node *next;
}linknode,*linklist;


/*尾插法建立带头结点单链表*/
linklist creat()
{ linklist head,r,s;
  datatype x;
  head=r=(linklist)malloc(sizeof(linknode));
  head->next=NULL;
  printf("请输入一组整型数据,以空格分隔,以0结束输入:\n");  scanf("%d",&x);
  while(x!=0)
    { 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("带头结点单链表为:");
  while(p)
   { printf("%5d",p->data);
     p=p->next;
    }
}


linklist linkSearch1(linklist head, datatype key)  /*带头结点单链表的非递归检索,将本函数补充完整。也可以不用我给的函数原型,自己写一个函数*/
{
linklist p=head->next;
while(p&&p->data!=key)
p=p->next;
return p;
}


linklist linkSearch2(linklist head, datatype key)  /*带头结点单链表的递归检索,将本函数补充完整。也可以不用我给的函数原型,自己写一个函数*/
{
linklist p=head;
if(p&&p->data!=key)
    linkSearch2(p->next,key);
return p;
}


void main()
{ linklist head,p;
  int key;
  
  head=creat();   /*尾插法建立带头结点单链表*/
  print(head);    /*输出带头结点单链表*/
  
  printf("\n请输入要查找的关键字:");  scanf("%d",&key);
  
  /*在此处完成对linkSearch1函数和linkSearch2函数的调用,并进行测试。如果是自己写的函数,同样完成函数的调用和测试*/
linklist k;
k=linkSearch1(head,key);
if(k->data==key)
puts("yes");
else puts("no");
linklist j;
j=linkSearch2(head,key);
if(j->data==key)
puts("yes");
else puts("no");
}
搜索更多相关主题的帖子: head 结点 函数 单链表 key 
2023-05-28 17:37
快速回复:分别用递归方式和非递归方式实现带头结点单链表的顺序检索 问题是最后 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032942 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved