在学习《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,转载请注明出处。