翻转链表问题
思路就是利用一个空的结点,使第一个结点与第二个结点的链接断开,第一个结点链接这个空结点,以此类推。但在断开链接之前需要用一个临时的变量保存第一个结点所指的结点(temp=p->next;),防止找不到后续的结点。
1 typedef int ElemType; 2 typedef struct LNode *LinkList; 3 typedef struct LNode 4 { 5 ElemType data; 6 LinkList next; 7 }LNode; 8 LinkList ReverseList (LinkList L) 9 { 10 LinkList temp; //定义临时变量保存结点 11 LinkList p=L; 12 LinkList save=NULL; //保存 13 LinkList head; 14 head->next = p; 15 while(p) 16 { 17 temp = p->next; //保存 18 p->next = save; //指向前一个结点 19 save = p; //前进到旧链表的第一个结点 20 p = temp; //继续进行下一次翻转 21 } 22 head->next = save; 23 return head; 24 }
学习的博客多用于在笔记中,防止笔记过于臃肿,所以将样例及运行结果放在博客中,后以超链接的形式记录在笔记中,所以有些博文过于单薄。如果有小伙伴遇到问题欢迎评论,看到就会回复,学渣一枚,加油努力。