#include"stdio.h"
#include
struct Node;
typedef struct Node * Pnode;
struct Node
{
int info;
Node * link;
};
typedef struct Node *Linklist;
Linklist creat_linklist()
{
int i;
Pnode q,p;
Linklist llist;
llist=NULL;
//if(llist!=NULL)llist=NULL;
for(i=0;i<10;i++)
{
q=(Pnode)malloc(sizeof(struct Node));
q->info=i;
if(llist==NULL)llist=p=q;
else
{
p->link=q;
p = q;
}
}
p->link=NULL;
return llist;
}
void print_Linklist(Linklist llist)
{
int i;
Pnode q;
q=llist;
for(i=0;i<10;i++)
{
printf("%6d\n",q->info);
q=q->link;
}
}
int main()
{
Linklist llist=creat_linklist();
print_Linklist(llist);
}
在creat_linklist()函数里,返回的链表是llist。
在for循环之前,llist=NULL;
进入for循环中,当i=0时,让llist=q,但是q->info是没有赋过值的。
当i>0时,q重新创建了一个Node,虽然你给q->info赋值了,但是q并没有追加到llist上去。
Linklist creat_linklist()
{
int i;
Pnode q = NULL;
Pnode lastNode = NULL; //最后产生的node
Linklist llist = NULL;
for(i=0; i<10; i++)
{
//创建新Node
q=(Pnode)malloc(sizeof(struct Node));
q->info=i;
q->link = NULL;
if(llist==NULL)
llist=q;
else
lastNode->link = q;
lastNode = q;
}
return llist;
}
#include"stdio.h"
#include
struct Node;
typedef struct Node * Pnode;
struct Node
{
int info;
Pnode * link;
};
typedef struct Node*Linklist;
Linklist creat_linklist()
{
int i;
Linklist node = NULL;
Linklist head = NULL;
for (i = 0;i < 10;i++)
{
Linklist cur = (Linklist)malloc(sizeof(struct Node));
cur->info = i;
cur->link = NULL;
if (node == NULL)
{
head = node = cur;
}
else
{
node->link = cur;
node = cur;
}
}
return head;
}
void print_Linklist(Linklist llist)
{
int i;
while (llist)
{
printf("%6d\n", llist->info);
llist = llist->link;
}
}
int main()
{
Linklist llist = creat_linklist();
print_Linklist(llist);
}