热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

建立链表和打印链表用的是递归法,可是只打印的出一个0,求助!!

#include<iostream.h>structLnode{doubledata;Lnode*next;};voidShowList(
#include

struct Lnode
{
  double data;
  Lnode * next;
};

void ShowList(Lnode * list)
{
  if(list)
  {
    cout<data<     if(list->next)
      ShowList(list->next);
  }
}

void AddToEnd(Lnode * newnode , Lnode * head)
{
  if(head==NULL)
    head=newnode;
  else
    AddToEnd(newnode,head->next);
}

Lnode * GetNode()
{
  Lnode * item;
  item=new Lnode;
  if(item)
  {
    item->next=NULL;
    item->data=0.0;
  }
  else
    cout<<"nothing allocated\n";
    return item;
}

void main()
{
  Lnode * head;
  Lnode * temp;
  temp=GetNode();
  while(temp)
  {
    cout<<"data?";
    cin>>temp->data;
    if(temp->data>0)
      AddToEnd(temp,head);
    else
      break;
    temp=GetNode();
  }
  ShowList(head);
}

13 个解决方案

#1


void AddToEnd(Lnode * newnode , Lnode * head)
{
  if(head==NULL)
    head=newnode;
  else
    AddToEnd(newnode,head->next);
}
这个错了!看你代码蛮工整,我就不多说了。。。

#2


struct Lnode
{
  double data;
  Lnode * next;
};
这不对吧!
struct Lnode
{
  double data;
  struct Lnode * next;
};

#3


#include
#include"stdlib.h"
struct Lnode
{
  double data;
  Lnode * next;
};

void ShowList(Lnode * list)
{
  Lnode*p=list;
  if(p)
  {
    cout<data<     if(list->next)
      ShowList(p->next);
  }
}
void AddToEnd(Lnode * newnode , Lnode * head)
{
  if(head==NULL)
    head=newnode;
  else
    AddToEnd(newnode,head->next);
}

void GetNode(Lnode*head)
{
int a;
  Lnode * item,*p=head;
  cout<<"data?";
  cin>>a;
  while(a>0){
   item=new Lnode;
   item->data=a;
   p->next=item;
   item->next=NULL;
   p=item;
  
  }
  if(a>0.0)  cout<<"nothing allocated\n";
}

void main()
{
  Lnode * head;
  Lnode * temp;
  head=new Lnode;
  GetNode(head);
   /*while(temp)
    {
      cout<<"data?";
      cin>>temp->data;
    if(temp->data>0)
     AddToEnd(temp,head);
    else
      break;
    temp=GetNode();
  }*/
  ShowList(head->next);
}
//注意在程序执行完之前要释放所有开辟的内存

#4


zhdleo(叮东) 叮东你落后了:)在C++环境下这样是对的.TC中就是错的!!!

#5


对不起!!!
上面有一些错!!!
#include
#include"stdlib.h"
struct Lnode
{
  double data;
  Lnode * next;
};

void ShowList(Lnode * list)
{
  Lnode*p=list;
  if(p)
  {
    cout<data<     if(list->next)
      ShowList(p->next);
  }
}
/*void AddToEnd(Lnode * newnode , Lnode * head)
{
  if(head==NULL)
    head=newnode;
  else
    AddToEnd(newnode,head->next);
}*/

void GetNode(Lnode*head)
{
int a;
  Lnode * item,*p=head;
  cout<<"data?";
  cin>>a;
  while(a>0){
   item=new Lnode;
   item->data=a;
   p->next=item;
   item->next=NULL;
   p=item;
   cout<<"data?";
   cin>>a;
  }
  if(a>0.0)  cout<<"nothing allocated\n";
}

void main()
{
  Lnode * head,*q,*qq;
  Lnode * temp;
  head=new Lnode;
  GetNode(head);
   /*while(temp)
    {
      cout<<"data?";
      cin>>temp->data;
    if(temp->data>0)
     AddToEnd(temp,head);
    else
      break;
    temp=GetNode();
  }*/
  ShowList(head->next);
//释放内存
  q=head;
  while(q){
  qq=q->next;
      delete q;
  q=qq;
  }
}

#6


不好意思,是我看错了,呵呵

#7


不过你的Lnode *head不赋初值,如果head指向随机地址不是NULL...

#8


对hssfox()的几点建议:
1.不要滥用递归,特别是当你还没有深刻地理解它的思想时。递归虽然能增强程序的可读性,但它的执行效率低。
2.以指针作为参数时,其实质也是传值方式。调用该函数以后指针值本身不会改变,函数只能对该指针所指地址内的数据进行修改。
3.如果你学过C++,那么你应该强迫自己使用它。C++并不是在C语言中加入cout和cin那么简单。
4.你代码书写的格式是值得欣赏的。
愿意共同进步!大家都是这么一步一步走过来的。

#9


to Keanu_Rocky(蠢笨如牛)
   说得好呀,你一说我才想起曾经看过的书,我真是没记性,我才是蠢笨如牛呀!

#10


如果这样改,似乎就可以了吧?
main(){
  ......
  head=new Lnode;
  head->next=NULL;
  ......
  AddToEnd(newnode,head)
  ......
}

void AddToEnd(Lnode * newnode , Lnode * head)
{
  if(!head->next)
      head->next=newnode;
  else
      AddToEnd(newnode,head->next);
}

#11


to liao2001(知之为知之,不知为不知。。。)
其实每次写程序的时候我都会发觉自己不够聪明,呵呵,可能大家都一样吧。
按照你上面说的那么改,虽然可以出结果,但是我觉得仍有不妥,程序应该是给程序员读的,而不是给机器“读”的。写程序的时候始终要把可读性放在首位,上面的程序可读性不强。建议如下:
void AddToEnd(Lnode *&head, const Lnode *&newnode)
{
...
}

#12


void destroy(Lnode *head){
Lnode *q=head,*qq
  while(q){
  qq=q->next;
      delete q;
  q=qq;
  }

}
void main()
{
  Lnode * head;
  Lnode * temp;
  head=new Lnode;
  GetNode(head);
   /*while(temp)
    {
      cout<<"data?";
      cin>>temp->data;
    if(temp->data>0)
     AddToEnd(temp,head);
    else
      break;
    temp=GetNode();
  }*/
  ShowList(head->next);
//释放内存
  destroy(head);
}

#13


丢了分号,要加分号

推荐阅读
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 题目描述:给定n个半开区间[a, b),要求使用两个互不重叠的记录器,求最多可以记录多少个区间。解决方案采用贪心算法,通过排序和遍历实现最优解。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • Codeforces Round #566 (Div. 2) A~F个人题解
    Dashboard-CodeforcesRound#566(Div.2)-CodeforcesA.FillingShapes题意:给你一个的表格,你 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文详细探讨了VxWorks操作系统中双向链表和环形缓冲区的实现原理及使用方法,通过具体示例代码加深理解。 ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • 本文介绍如何使用Objective-C结合dispatch库进行并发编程,以提高素数计数任务的效率。通过对比纯C代码与引入并发机制后的代码,展示dispatch库的强大功能。 ... [详细]
  • ImmutableX Poised to Pioneer Web3 Gaming Revolution
    ImmutableX is set to spearhead the evolution of Web3 gaming, with its innovative technologies and strategic partnerships driving significant advancements in the industry. ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
  • 本文详细介绍了C语言中链表的两种动态创建方法——头插法和尾插法,包括具体的实现代码和运行示例。通过这些内容,读者可以更好地理解和掌握链表的基本操作。 ... [详细]
  • 本题涉及一棵由N个节点组成的树(共有N-1条边),初始时所有节点均为白色。题目要求处理两种操作:一是改变某个节点的颜色(从白变黑或从黑变白);二是查询从根节点到指定节点路径上的第一个黑色节点,若无则输出-1。 ... [详细]
author-avatar
卫凤莉_463
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有