创建动态链表问题
#include <stdio.h>#include <malloc.h>
#define NUll 0
struct Node{
int num;
struct Node *next;
};
//创建链表函数,n为节点的个数
struct Node *Create1(int n){
struct Node *head,*p1,*p2;
int a ;
head = NULL;
//0个节点的情况
if(n<=0) return head;
//1个节点的情况
if(n==1){
p1 = (struct Node *)malloc(sizeof(struct Node));
printf("请输入一个数字\n");
scanf("%d",&a);
head = p1;
free(p1);
return head;
}
//2个以上节点的情况
if(n>=2){
int flag = n-1;
p1 = (struct Node *)malloc(sizeof(struct Node));
printf("请输入一个数字\n");
scanf("%d",&a);
head = p2 = p1 ;
while(flag){
p1 = (struct Node *)malloc(sizeof(struct Node));
printf("请输入一个数字\n");
scanf("%d",&a);
p2->next = p1;
p2 = p1;
--flag;
}
free(p1);
return head;
}
};
main(){
struct Node *result = Create1(5);
printf("%d\n",result->num);
}
函数的目的是根据输入的形参,创建n个节点(不包括头结点在内)
创建过程很顺利,但是最后测试的时候,我输入的是1,2,3,4,5,但是最后输出的结果是一个很大的数字
哪位牛人帮我看看这个程序呀,谢谢了哈!
--------------------------------------------
我把结构体也贴上来了,我大概知道是地址
我已经调了好久了,总是按照之前自己的思路调,总觉得没错!
[ 本帖最后由 zwb1986718 于 2009-10-20 21:26 编辑 ]