关于链表的问题

云斜月 2013-04-08 11:00:53
#include<iostream>
using namespace std;
class Node
{
friend class List;
public:
Node():data(0),next(0){}
Node(int n):data(n),next(NULL){}
Node(Node&node)
{
this->data=node.data;
this->next=node.next;
}
Node&operator=(Node&node){this->data=node.data;
this->next=node.next;}
private:
int data;
Node* next;
};

#include"Node.h"
#include<iostream>
using namespace std;
class List
{
public:
List():firstNode(0){}
void createList(List&);

private:
Node *firstNode;
};

#include"LinkList.h"

void List::createList(List&list)
{
int inum=3;

cout<<"请输入数字:";
// cin>>inum;
Node *current=new Node(0);
current=list.firstNode; //使用这种方式赋值,运行到 current->next=newNode;程序中断,
//而使用list.firstNode=current 赋值,可以顺利执行。
// =current;
//firstNode=current;
for(int i=0;i!=inum;++i)
{
Node *newNode=new Node();
newNode->data=i;
// newNode->next=firstNode;
current->next=newNode;
current=newNode;
// firstNode=newNode;



}

}


current=list.firstNode; //使用这种方式赋值,运行到 current->next=newNode;程序中断,
//而使用list.firstNode=current 赋值,可以顺利执行。 求解
...全文
124 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
derekrose 2013-04-09
  • 打赏
  • 举报
回复
引用 5 楼 li744831579 的回复:
引用 1 楼 derekrose 的回复:firstNode不是private的么 私有公有对于类内部来说是没有影响的,
看错,原来是成员函数
云斜月 2013-04-09
  • 打赏
  • 举报
回复
引用 1 楼 derekrose 的回复:
firstNode不是private的么
私有公有对于类内部来说是没有影响的,
云斜月 2013-04-09
  • 打赏
  • 举报
回复
引用 3 楼 hugett 的回复:
C/C++ code?123456789101112131415161718192021void List::createList(List&list){ int inum=3; cout<<"请输入数字:"; // cin>>inum; Node *current=new Node(0); //firstNode……
firstNode赋值给current,他们都是指向Node的,不是current->data=0;current->next=0;吗?
云斜月 2013-04-09
  • 打赏
  • 举报
回复
引用 8 楼 yudahai109 的回复:
完全不知道你要干什么,如果只是创建一个链表,那你的思想本来就是错的。 Node *current=new Node(0); current=list.firstNode; 这里面为什么要 引进 一个list?你只创建一个新的链表,引进这个List& list干什么?实在看不懂
传递list和不传递list对这道题的问题没影响吧,不传递只不过写成this.firstNode就行了,
有新工作否 2013-04-09
  • 打赏
  • 举报
回复
完全不知道你要干什么,如果只是创建一个链表,那你的思想本来就是错的。 Node *current=new Node(0); current=list.firstNode; 这里面为什么要 引进 一个list?你只创建一个新的链表,引进这个List& list干什么?实在看不懂
hugett 2013-04-09
  • 打赏
  • 举报
回复
引用 4 楼 li744831579 的回复:
引用 3 楼 hugett 的回复:C/C++ code?123456789101112131415161718192021void List::createList(List&amp;list){ int inum=3; cout<<"请输入数字:"; // cin>>inum; Node *current=new Nod……
firstNode赋值给current,它们都指向firstNode原来指向的东西,而不是新new的那个Node,current new的那个Node就丢掉了,显然这不是你想要的。。
hugett 2013-04-08
  • 打赏
  • 举报
回复

void List::createList(List&list)
{
    int inum=3;
     
    cout<<"请输入数字:";
    //  cin>>inum;
     Node *current=new Node(0);
      //firstNode初始化为0,这句就是current=NULL,然后current都为NULL了,
      //你下边还current->next当然挂掉。。
      //而list.firstNode=current就是让list的首指针指向你新new的Node,当然就没问题。
      current=list.firstNode;   
      for(int i=0;i!=inum;++i)
      {      
          Node *newNode=new Node();
          newNode->data=i;
         // newNode->next=firstNode;
          current->next=newNode;
          current=newNode;
         // firstNode=newNode;
      }
}
mujiok2003 2013-04-08
  • 打赏
  • 举报
回复

void List::createList(List&list)
{
  assert(list.firstNode);
  //
  .....
}
derekrose 2013-04-08
  • 打赏
  • 举报
回复
firstNode不是private的么

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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