【发布时间】:2011-04-20 20:33:45
【问题描述】:
#include <stdio.h>
typedef struct node
{
int i;
struct node *next;
}node;
node getnode(int a)
{
struct node n;
n.i=a;
n.next=NULL;
return n;
}
main()
{
int i;
node newtemp,root,temp;
scanf("%d",&i);
root=getnode(i);
temp=root;
while(i--)
{
newtemp=getnode(i);
temp.next=&newtemp;
if(root.next==NULL)
{
root=temp;
}
temp=*(temp.next);
}
temp=root;
while( temp.next != NULL )
{
printf(" %d ",temp.i);
temp=*(temp.next);
}
}
我正在尝试在不使用 malloc 的情况下创建链接列表。编程只打印根,后面没有节点。我找不到错误。如果有任何内存问题,gcc 编译器会抛出分段错误。(?)请忽略糟糕的编程风格..
【问题讨论】:
-
不使用
malloc的链表?这甚至可能吗? -
为什么?我不确定,但是当我们有堆栈分配和定义良好的复制构造函数时为什么不能呢???
-
欢迎来到 SO :) 您可以并且应该使用“010101”按钮或 4 空格缩进将您的代码 sn-ps 标记为代码。我刚刚为你做了。
-
@gablin:当然。您可以静态声明一个节点数组,并将其用作内存池。它假设您知道节点数的上限是多少,但这是一种完全有效的方法(当我在大学里做 Fortran 77 时,它是 only 方法)。
malloc()/free()为您提供更多灵活性,但并非绝对必要。 -
这完全是因为不愿意检查 malloc() 返回值为零并实现内存不足逻辑,不是吗? :)
标签: c malloc linked-list