|
发表于 2016-5-31 13:19:03
|
显示全部楼层
第一个问题- linklist CreateLinkList()
- {
- linklist head = NULL;//这里初始化头指针
- linklist s, r;
- int i;
- r = head;r指向头指针指向的地方
- for(i=1; i <= CardNumber; i++)
- {
- s = (linklist)malloc(sizeof(sqlist));//为结点分配空间
- s->data = 0;//初始化节点的data域,赋值为0
- if(head == NULL)//第一次做for循环时,头节点指向为空,所以执行head头指针指向s这个结点
- head = s;
- else
- //第二次再执行for循环,head已经指向s这个结点,不为空,所以进行判断是因为要把两种情况分开
- //1、head指向第一个结点时
- //2、head指向不为空的时候
- r->next = s;
- r = s;
- }
- r->next = head;
- return head;
- }
复制代码
第二个问题不太懂在问啥……
- r=head;//这句是把r指向头指针
- head->next=s;/*这句是用头插法把结点插入链表*/
复制代码
原来的代码是用r作遍历,不断向后插入结点,到最后r指向的是插入的最后一个结点,r->next=head是把这个链表写成循环链表。
要是你写的那种头插法的话你的r一直都指向的是头结点,head也一直都指向的头结点,那尾部的结点貌似就没办法链接了…… |
|