关于链表死循环
//新建了一个链表,但是为什么一直在死循环中。#include<stdio.h>
#include<stdlib.h>
typedef struct position
{
int n;
struct position *next;
}pos;
char pos_num[15];
void Print_Link(pos *head)
{
pos *last;
printf("\n%d\t%d\n",&head,&(head->next));
getchar();
last=head->next;
getchar();
printf("%d\t%d\t%d\n",&(head),&(head->next),&(last));
while(last)
{
printf("%d\t",last->n);//由于p和last的地址一直没有变动过,所以此处是死循环。
last=last->next;
}
printf("\n");
}
void Creat_Link(pos *head);
main()
{
int num=30;
pos *head;
Creat_Link(head);
Print_Link(head);
}
void Creat_Link(pos *head)
{
char i;
pos *p=NULL,*last=NULL;
head=(pos *)malloc(sizeof(pos));
head->next=NULL;
last=head;
for(i=0;i<30;i++)
{
free(p);
p=(pos *)malloc(sizeof(pos));
p->n=i+1;
printf("%d\t%d\t%d\n",p->n,&p,&(last));//这里建立的链表,打印出的地址字符显示p的位置和last的位置一直没变动过
last->next=p;//但为什么会没有变动?
last=p;
}
last->next=NULL;
}