需要注意的是,当head指针在某次偏移之后,它将会指向原链表的尾节点(此时head->next == NULL为真),就说明此刻仅需要反转最后一个节点。 Part 3 示例代码 示例说明: 为了方便演示运行效果,将在主函数中构建4个Node类型的结构体变量,先对他们赋值,然后将他们串成链表,遍历链表,打印节点数据(预期打印:1,2,3,4)...
third->next =NULL;printf("原始链表:"); printLinkedList(head);// 反转链表head = reverseLinkedList(head);printf("反转后的链表:"); printLinkedList(head);// 释放内存free(head);free(second);free(third);return0; } 复制代码 以上代码创建了一个包含3个节点的链表,然后调用reverseLinkedList函数来反转...
72/*用键盘输入初始化一个链表,参数为链表头指针地址*/73voidInitializeLinkList(LinkList * Head) 74 { 75 pNode EndNode=*Head;/*总是指向链表最后一个节点*/76 77 pNode TempNode=NULL;/*临时节点,存放当前输入的链表节点*/78inti=1;/*节点记数*/79chargetEnter; 80 81 printf("please input charact...
} 当前标题:C语言反转单向链表的代码 网址分享:http://www.pzhseo.com/article/pichgj.html
其实,这个递归版反转算法有个小缺陷:那就是整个递归完成时,返回的节点就是传入的参数。也就是说,如果传入的是反转前的单向链表首节点,那么最终返回的也是这个节点,而这个节点却是反转后的单向链表的尾节点(因为反转了,首尾交换)。因此,使用时,需要做些微不足道的工作来弥补缺陷。即:在使用前需要先对单向链表进行...
这个题目是之前参加面试时遇到的,题目基础要求是:给定指定节点数的单向链表,如何反转整个链表? 这个问题以前也遇到过几次,每次都是写完就忘了,这里记录下实现以备后面思考查看。 1.先自定义Node结构 classNode{privateintvalue;privateNodenext;publicNode(intvalue){this.value=value;}publicvoidsetNext(Nodenext){th...