|
发表于 2014-5-25 23:35:41
|
显示全部楼层
本帖最后由 woiavril 于 2014-5-26 01:55 编辑
回答你得问题就洗洗睡了,我已经把注释写的很详细了,可以说是有点啰嗦了,希望能帮助到你。- static void CreaList(NodeType **ppHead, const int n)
- {
- int i, iCipher;
- NodeType *pNew, *pCur;
- for (i = 1; i <= n; i++)
- {
- printf("输入第%d个人的密码: ", i);
- scanf("%d", &iCipher);
- /*GetNode函数式用来生成新的节点,这个你知道吧!我的注释是写在代码的上面*/
- pNew = GetNode(i, iCipher);
- /*主函数main里有这么一句NodeType *pHead = NULL;所以第一次肯定进入if语句*/
- if (*ppHead == NULL)
- {
- /*pCur表示指向当前节点(你也可以理解为指向当前链表最后一个节点),ppHead当然是头节点,
- pNew是指向GetNode()函数新创建的节点,这里让当前指针pCur和头指针*ppHead都指向pNew*/
- *ppHead = pCur = pNew;
- /*这里的目的就是让当前节点指针pCur->next指向头节点,而当前节点指针pCur就是头指针
- 说白了这里就是让头节点指向头节点了,这时就形成了一个最简单的环了*/
- pCur->next = *ppHead;
- }
- /*因为第一次创建pNew时头节点已经在if语句里赋初值了,所以以后每次GetNode()创建新节点
- 都会进入else语句了*/
- else
- {
- /*我就说下第二次创建新节点的情况,以后的都是一样的,pCur->next是指向头节点的(这个条件
- 一直成立),这句就是让pNew->next指向头节点了(因为它是新插入的,也就是链表最后一个,它
- 必须指向头节点,这样才能形成环)*/
- pNew->next = pCur->next;
- /*这里就让当前链表的最后的节点pCur(这里pNew还没有插入链表)的next指针指向要插入链表的节点
- pNew*/
- pCur->next = pNew;
- /*这时pNew才算是已经插入到链表里了,pCur表示的当前链表的最后节点,这时pNew已经插入了链表
- 所以它是最后一个了,所以让pCur指向pNew,这样就可以进行下次节点插入链表*/
- pCur = pNew;
- }
- }
- printf("完成单向循环链表的创建!\n");
- }
复制代码
|
评分
-
查看全部评分
|