创建链接列表

时间:2015-05-23 10:47:21

标签: c++

我刚刚得到了这个简单的编程... 我们来看看:

#include <iostream>
using namespace std;

struct node
{
int i;
node *nxt;
};



int main()
{

node *head = NULL, *temp = NULL;

head->i = 10;
temp->i = 20;

head->nxt = temp;
temp->nxt = NULL;

cout << head->i << "-" << head->nxt << endl;
cout << temp->i << "-" << temp->nxt << endl;

return 0;
}

我真的不知道是什么问题!!它给了我DEV,VS,代码块和一些运行时和一些编译错误......

任何人都可以回答吗?

提前致谢!

3 个答案:

答案 0 :(得分:0)

按以下方式写主要

node node1, node2;

node *head = &node1, *temp = &node2;

head->i = 10;
temp->i = 20;

head->nxt = temp;
temp->nxt = NULL;

cout << head->i << "-" << head->nxt << endl;
cout << temp->i << "-" << temp->nxt << endl;

另一种方法是动态分配内存。例如

#include <iostream>
#include <memory>

struct node
{
    int i;
    node *nxt;
};

int main() 
{
    std::unique_ptr<node> head( new node );
    std::unique_ptr<node> temp( new node );

    head->i = 10;
    temp->i = 20;

    head->nxt = temp.get();
    temp->nxt = nullptr;

    std::cout << head->i << "-" << head->nxt << std::endl;
    std::cout << temp->i << "-" << temp->nxt << std::endl;

    return 0;
}

程序输出可能看起来像

10-0x8745018
20-0

答案 1 :(得分:0)

您正尝试取消引用NULL指针。您可以像这样使用new,为指向指针的内存分配内存。

#include <iostream>
using namespace std;

struct node
{
  int i;
  node *nxt;
};

int main()
{
  node *head = new node, *temp = new node;

  head->i = 10;
  temp->i = 20;

  head->nxt = temp;
  temp->nxt = NULL;

  cout << head->i << "-" << head->nxt << endl;
  cout << temp->i << "-" << temp->nxt << endl;

  delete head;
  delete temp;
}

答案 2 :(得分:0)

发现它! 2种方式:

#include <iostream>
using namespace std;

struct node
{
int i;
node *nxt;
};

int main()
{

node head, temp;

head.i=10;
temp.i=20;

head.nxt=&temp;
temp.nxt=NULL;

cout<<head.i<< " - " <<head.nxt<< endl;
cout<<temp.i<< " - " <<temp.nxt<< endl;

return 0;
}

#include <iostream>
using namespace std;

struct node
{
int i;
node *nxt;
};

int main()
{

node *head=NULL;
head = new node;

node *temp=NULL;
temp = new node;

head->i=10;
temp->i=20;

head->nxt=temp;
temp->nxt=NULL;

cout<<head->i<< " - " <<head->nxt<< endl;
cout<<temp->i<< " - " <<temp->nxt<< endl;

return 0;
}

区别在于第一个使用堆栈用于内存而第二个用于堆!

再次感谢:)