找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 681|回复: 9

[求助]改一下这个函数

[复制链接]
发表于 2009-11-3 00:56:29 | 显示全部楼层 |阅读模式 IP:江苏扬州
以下是个链表,结果输出1,而我要的是输出1 2 3 4 5
问题应该出在绿色处的函数定义,会的助我,谢谢
在头文件"mylist.h"中有
struct ListNode
{
int nun1;
ListNode *next;
};
class MyList
{
static int i;
ListNode *head;
public:
void displist();
void creatlist(int&a);
MyList(int a=1);
~MyList();
};
在文件"mylist.cpp"中有
#include "mylist.h"
#include <iostream>
using namespace std;
MyList::MyList(int a)
{
creatlist(a);
}
MyList::~MyList()
{
}
int MyList::i = 0;
void MyList::creatlist(int &a)//问题就在这个函数里,该怎么改呢
{
ListNode *h=NULL,*s,*t;
if(i==0)
{
h=new ListNode;
head=h;
h->nun1=a;
h->next=NULL;
}
t=h;
if(i!=0)
{
s=new ListNode;
t=new ListNode;
s->nun1=a;
s->next=NULL;
t->next=s;
t=s;
}
i++;
}
void MyList::displist()
{
ListNode *p=head;
while(p!=NULL)
{
cout<<p->nun1<<" ";
p=p->next;
}
cout<<endl;
}

主函数有
#include "mylist.h"
#include <iostream>
using namespace std;
void main()
{
MyList list,list1(3),list2(4),list3(5);
list.displist();
}
他为什么只输出1,我要的结果是1,2,3,4,5
发表于 2009-11-3 00:56:31 | 显示全部楼层 IP:江苏扬州
问题就在绿色的地方。

void MyList::creatlist(int &a)//问题就在这个函数里,该怎么改呢
{
ListNode *h=NULL,*s,*t;
if(i==0)
{
h=new ListNode;
head=h;
h->nun1=a;
h->next=NULL;
}
t=h;
if(i!=0)
{
s=new ListNode;
t=new ListNode;
s->nun1=a;
s->next=NULL;
t->next=s;
t=s;
}
i++;
}

红色的地方画蛇添足。有了它,指针t就连不到head上了。
回复

使用道具 举报

发表于 2009-11-3 00:56:32 | 显示全部楼层 IP:江苏扬州
建议把method:void creatlist(int&a) 设为private member.
这样更安全。
回复

使用道具 举报

发表于 2009-11-3 00:56:33 | 显示全部楼层 IP:江苏扬州
t=new ListNode;
去掉了,程序运行错误
能帮我完整的修改一下吗?
回复

使用道具 举报

发表于 2009-11-3 00:56:34 | 显示全部楼层 IP:江苏扬州
觉得楼主好象对链表的理解的不太清楚, 我改了一下.

  1. #include <iostream>
  2. using namespace std;
  3. struct ListNode
  4. {
  5. int nun1;
  6. ListNode *next;
  7. };
  8. class MyList
  9. {
  10. int i;
  11. ListNode *head;
  12. public:
  13. MyList(); //默认构造函数
  14. ~MyList();
  15. void add(int&a); //原来的creatlist
  16. void displist();
  17. };

  18. MyList::MyList()
  19. {
  20. head = NULL;
  21. i = 0;
  22. }
  23. MyList::~MyList()
  24. {
  25. ListNode *t;
  26. t = head; //从头删除链表 ,释放空间
  27. while(t != NULL)
  28. {
  29. head = head->next;
  30. delete t;
  31. t = head;
  32. }
  33. }
  34. void MyList::add(int &a)//函数改了一下
  35. {
  36. ListNode *h, *t;
  37. h=new ListNode;
  38. h->nun1=a;
  39. h->next=NULL;
  40. if(i==0)
  41. {
  42. head=h;
  43. }
  44. else
  45. {
  46. t = head;
  47. while(t->next != NULL) //找到链表的结尾
  48. t = t->next;

  49. t->next = h; //加入
  50. }
  51. i++;
  52. }
  53. void MyList::displist()
  54. {
  55. ListNode *p=head;
  56. while(p!=NULL)
  57. {
  58. cout<<p->nun1<<" ";
  59. p=p->next;
  60. }
  61. cout<<endl;
  62. }

  63. int main()
  64. {
  65. MyList mylist; // 一个空表
  66. for(int i=1; i<6; i++)
  67. mylist.add(i);

  68. mylist.displist();
  69. system("pause");
  70. return 0;
  71. }
复制代码
回复

使用道具 举报

发表于 2009-11-3 00:56:35 | 显示全部楼层 IP:江苏扬州
woodhead每次都是你帮我,感动

你写的程序很好。
而我的这个还是有错的,我想知道错在哪,你能告诉我错在哪吗?
void MyList::creatlist(int &a)//这个函数想要让他存入数据
{
ListNode *h=NULL,*s,*t;
if(i==0)
{
h=new ListNode;
h->nun1=a;
h->next=NULL;
head=h;
}
if(i!=0)
{
s=new ListNode;
s->nun1=a;
s->next=NULL;
h->next=s;
delete s;
}
i++;
delete h;
}
回复

使用道具 举报

发表于 2009-11-3 00:56:36 | 显示全部楼层 IP:江苏扬州
我的题目要求是:比如你用MyList创建了一些对象,MyList list,list1(3),list2(4),list3(5);
然后我用一个list.displist();就能把这些对象创建的数据全部输出来。
回复

使用道具 举报

发表于 2009-11-3 00:56:39 | 显示全部楼层 IP:江苏扬州
if(i!=0)
{
s=new ListNode;
s->nun1=a;
s->next=NULL;
h->next=s;
delete s;
}
i++;
delete h;

看不懂,如果链表不是空的, 想要怎么做?
回复

使用道具 举报

发表于 2009-11-3 00:56:43 | 显示全部楼层 IP:江苏扬州
就是想要往你添加数据,我这个题目的要求(意思好象是类对象相加,我猜的,^_^ ^_^)
就比如:MyList list,list1(2),list2(3),list3(4);
有list,list1,list2,list3这些对象,然后我只要用一个list.displist()就能输出1,2,3,4而不是只单独输出一个1
回复

使用道具 举报

发表于 2009-11-3 00:56:44 | 显示全部楼层 IP:江苏扬州
这个我不会了, 多看看书吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 05:30 , Processed in 0.237640 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表