《C语言—从入门到项目实践》Issue分析及总结

在学习《C语言—从入门到项目实践》总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

《C语言—从入门到项目实践》(超值版)——聚慕课教育研发中心 编著

Issue分析及总结

 

 

 

 

第17章

问题描述:17.2中的链表的建立

代码注释及说明:

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include "stdio.h"
 3 #include "malloc.h"
 4 #define NULL 0                          /*令NULL为0,用它表示空地址*/
 5 /*LEN代表struct stu结构体类型数据的长度*/
 6 #define LEN sizeof (struct stu) 
 7 struct stu
 8 {
 9     long int num;
10     float score;
11     struct stu *next;
12 };
13 int n;
14 struct stu *creat()                      /*此函数带回一个指向链表头的指针*/
15 {
16     struct stu *head, *p1, *p2;
17     n = 0;                                    /*n为结点的个数*/
18     p1 = p2 = (struct stu *)malloc(LEN);        /*开辟一个新单元,p1指向p2,共同指向这个新单元*/
19     scanf("%ld,%f", &p1->num, &p1->score);//如:输入:1,1.5——>p1指向该节点,p2也指向该节点
20     head = NULL;//头指针为空
21     while (p1->num != 0)
22     {
23         n = n + 1;//链表节点个数的递增
24         if (n == 1)head = p1;//如果是第一个节点,令头指针head指向p1
25         else p2->next = p1;//如果不是第一个节点,令p2的next指针指向p1
26         p2 = p1;//p2指针向后移动,p2指向p1(刚输入的节点)
27         p1 = (struct stu *)malloc(LEN);//p1指向刚开辟的一个新单元
28         scanf("%ld,%f", &p1->num, &p1->score);//如:输入:1,1.5——>p1指向该节点
29     }
30     p2->next = NULL;//输入完毕,令p2的next域指向空(链表的结尾)
31     return(head);                            /*返回链表的头地址*/
32 }
33 void main()
34 {
35     creat();//此处可以调用create函数创建的链表
36 }

思路:p1指向新插入的节点,p2的next域指向链表新插入的节点p1——>实现链接上节点p1,p2通过指向p1实现不断后移。

 

问题描述:17.10中的迷宫问题求解的思路,怎么找到出口,路过的下标为什么会少一个?

思路:1)通过探测一个位置的右,下,左,上的位置(标志位)是否为0,而判定下一步是否可以移动到这个点;2)对走过的点,将其标志位设置为0,并将此点入栈;3)如果此点四周都无法走通,出栈,判断刚出栈的点是否可以走通,依次下去;4)如果可以走到出口位置,表示存在这样的路径,如果走不到(即最后栈为空),表明不存在这样的路径。

因为涉及到对已经走过的点的出栈,所以(3行6列)出栈后后续路径可以走通了,输出了路径,最后不存在(3,6)

 

 

 

在学习《C语言—从入门到项目实践》总结了笔记,并分享出来。有问题请及时联系博主:Alliswell_WP,转载请注明出处。

你可能感兴趣的:(《C语言—从入门到项目实践》Issue分析及总结)