| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 683 人关注过本帖
标题:[求助]改一下这个函数
只看楼主 加入收藏
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
 问题点数:0 回复次数:10 
[求助]改一下这个函数

以下是个链表,结果输出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

搜索更多相关主题的帖子: 函数 
2006-04-14 13:27
strawberry
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-11-30
收藏
得分: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++;
}

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

我知道交流对于软件人是多么的重要! 所以我希望长期待在这里!
2006-04-14 15:11
strawberry
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2005-11-30
收藏
得分:0 
建议把method:void creatlist(int&a) 设为private member.
这样更安全。

我知道交流对于软件人是多么的重要! 所以我希望长期待在这里!
2006-04-14 15:19
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 

t=new ListNode;
去掉了,程序运行错误
能帮我完整的修改一下吗?


woyaochengshuyidianle 我真的什么也不会
2006-04-14 15:41
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

觉得楼主好象对链表的理解的不太清楚, 我改了一下.

[CODE]#include <iostream>
using namespace std;

struct ListNode
{
int nun1;
ListNode *next;
};

class MyList
{
int i;
ListNode *head;
public:
MyList(); //默认构造函数
~MyList();
void add(int&a); //原来的creatlist
void displist();
};


MyList::MyList()
{
head = NULL;
i = 0;
}

MyList::~MyList()
{
ListNode *t;
t = head; //从头删除链表 ,释放空间
while(t != NULL)
{
head = head->next;
delete t;
t = head;
}
}

void MyList::add(int &a)//函数改了一下
{
ListNode *h, *t;

h=new ListNode;
h->nun1=a;
h->next=NULL;

if(i==0)
{
head=h;
}
else
{
t = head;
while(t->next != NULL) //找到链表的结尾
t = t->next;

t->next = h; //加入
}
i++;
}

void MyList::displist()
{
ListNode *p=head;
while(p!=NULL)
{
cout<<p->nun1<<" ";
p=p->next;
}
cout<<endl;
}


int main()
{
MyList mylist; // 一个空表

for(int i=1; i<6; i++)
mylist.add(i);

mylist.displist();

system("pause");
return 0;
} [/CODE]


2006-04-14 16:12
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 

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;
}


woyaochengshuyidianle 我真的什么也不会
2006-04-14 16:32
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 
我的题目要求是:比如你用MyList创建了一些对象,MyList list,list1(3),list2(4),list3(5);
然后我用一个list.displist();就能把这些对象创建的数据全部输出来。

woyaochengshuyidianle 我真的什么也不会
2006-04-14 16:44
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 

if(i!=0)
{
s=new ListNode;
s->nun1=a;
s->next=NULL;
h->next=s;
delete s;
}
i++;
delete h;

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


2006-04-14 16:44
linlin
Rank: 1
等 级:新手上路
帖 子:134
专家分:0
注 册:2006-3-14
收藏
得分:0 

就是想要往你添加数据,我这个题目的要求(意思好象是类对象相加,我猜的,^_^ ^_^)
就比如:MyList list,list1(2),list2(3),list3(4);
有list,list1,list2,list3这些对象,然后我只要用一个list.displist()就能输出1,2,3,4而不是只单独输出一个1


woyaochengshuyidianle 我真的什么也不会
2006-04-14 17:33
woodhead
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:1124
专家分:0
注 册:2005-7-18
收藏
得分:0 
这个我不会了, 多看看书吧

2006-04-14 18:11
快速回复:[求助]改一下这个函数
数据加载中...
 
   



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

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