- 论坛徽章:
- 0
|
这是一个范例,输入5个整数,使用链表进行反向排续。我刚开始学,没怎么看懂:
- 1 #include <stdlib.h>;
- 2 #define NULL 0
- 3 struct list
- 4 {
- 5 int data;
- 6 struct list *next;
- 7 };
- 8 typedef struct list node;
- 9 typedef node *link;
- 10
- 11 main()
- 12 {
- 13 link ptr,tail,head;
- 14 int num,i;
- 15
- 16 tail=(link)malloc(sizeof(node));
- 17 tail->;data=NULL;
- 18 ptr=tail;
- 19 for(i=0;i<5;i++)
- 20 {
- 21 scanf("%d",&num);
- 22 ptr->;data=num;
- 23 head=(link)malloc(sizeof(node));
- 24 head->;next=ptr;
- 25 ptr=head;
- 26 }
- 27 ptr=ptr->;next;
- 28 printf("the reverse node is");
- 29 while(ptr!=NULL)
- 30 {
- 31 printf("the reverse value is %d\n",ptr->;data);
- 32 ptr=ptr->;next;
- 33 }
- 34 }
复制代码
其中的设置指针tail,个人觉得是不需要的,这样写有什么理由吗?
从22行开始,请大家指点一下。
另外还有个问题,以前我是用数组排序的,输入的数据要写一个循环语句,把数据放入array,array[i+1]..........但我看链表,只需要在循环语句里这样写
- for(i=0;i<5;i++)
- {
- scanf("%d",&num);
- ptr->;data=num;
- ptr->;next=(link)malloc(sizeof(node));
- ptr=ptr->;next;
- }
复制代码
就可以了,请问是不是因为指针的缘故,在ptr=ptr->;next之后,上一个存储器空间仍然保留? |
|