创建没有指针vs指针的链接列表

时间:2014-01-31 11:42:19

标签: c pointers linked-list

我正在通过书籍学习链接列表,在一本书中,头部指针在全局初始化,而在另一本书中,它在main中初始化,然后传递给create。在main中声明它有什么好处吗?

#include<stdio.h>
#include<conio.h>
#include<alloc.h>
void create(void);
void traverse(void);
void create()
{

char ch;
struct node *ptr,*cpt;
ptr=(struct node*) malloc(sizeof(struct node));
if(ptr==NULL)
{
    printf("Memory cant be allocated");

}
printf("Enter information you want to store in node.\n");
scanf("%d",&ptr->info);
first=ptr;
do
   {
    cpt=(struct node*) malloc(sizeof(struct node));
    if (cpt==NULL)
    printf("Can't allocate memory");
    printf("Enter next node information.");
    scanf("%d", &cpt->info);
    ptr->link=cpt;
    ptr=cpt;
    printf("Do you want to enter another node?(y/n)");
    ch=getch();
}while(ch=='y');
ptr->link = NULL;
}

1 个答案:

答案 0 :(得分:0)

c中的内存模型如下

Global variables go into `BSS (Block start with Symbols) region`

Global initialized variables go into `Initialized data region`

Scope limited variables go into `Stack`

默认情况下,main内声明的变量具有存储分类器automatic。 因此他们全都进入stack。但如果你在主要(或任何地方)内有static variables,他们将进入'BSS'。

所以这就有所不同。 main中的大量数据需要large stack