链表逆序,即将原先的链表 a->b->c->d, 变为 d->c->b->a。需要使用三个指针来进行操作。
public int* reverse(int* head) {
int* front = head;
int* back = null;
int* temp;
while (front != null) {
temp = font - > next;
font -> next = back;
back = font;
font = temp;
}
return back;
}
如果要求链表两两逆序,例如 1->2->3->4 变成 2->1->4->3。该怎么呢?需要分情况处理链表长度为单数和偶数的情况。
public ListNode reverse(ListNode head) {
if (head == null)
return null;
if (head.next == null)
return head;
ListNode back = head;
ListNode front = head.next;
ListNode temp;
head = front;
while (true) {
temp = front.next;
front.next = back;
back.next = temp;
if (temp == null || (temp != null && temp.next == null))
break;
else {
front = temp.next;
back.next = front;
back = temp;
}
}
return head;
}
分享到:
相关推荐
IT公司最常见笔试题。2010-06-07编写。欢迎讨论。 QQ:114723704
问题:如何实现一个高效的单向链表逆序输出?出题人:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。
链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序链表逆序
这是一个简单的java程序,用于实现对输入字符的逆序输出。初学者可以参考。
链表逆序算法,最简单的算法,有些算法可以不必自己写出,会用就可以,比如这个算法,很简单,很有效,代码整洁清晰
主要介绍了C语言数据结构实现链表逆序并输出的相关资料,需要的朋友可以参考下
使用纯粹C语言编写的链表逆序的源代码,有大量注释,特别适合C语言初学者学习和查阅。
1.1.1 如何实现一个高效的单向链表逆序输出?
问题:如何实现一个高效的单向链表逆序输出?出题人:阿里巴巴出题专家:昀龙/阿里云弹性人工智能负责人参考答案:下面是其中一种写法,也可以有不同的写法,比如递归等。
数据结构的线性链表的查找,删除,逆序,顺序等功能
主要讲述以http://blog.csdn.net/LCL_data/archive/2009/12/09/4974499.aspx中的链表逆序为模板来讲述指针的使用
简洁的做法是 遍历链表, 元素进栈, 遍历的同时销毁原来的链表。 元素出栈, 建立新链表。 高效的是,
对于链表有兴趣的朋友 ,作用很大。里面有几种不同的方法,c++。
——学习参考资料:仅用于个人学习使用! 本代码仅作学习交流,切勿用于商业用途,否则后果自负。若涉及侵权,请联系,会尽快处理! 未进行详尽测试,请自行调试!
主要介绍了C语言解字符串逆序和单向链表逆序问题的代码示例,求逆序也是考研和面试中的基础算法题类型,需要的朋友可以参考下
数据结构课程练习---------------------------------------逆序链表的输入输出
C语言链表的各种操作,链表是各种发杂数据结构的基础,掌握链表很重要。。。
单链表逆序 步骤: 1. 初始化单链表 2. 动态创建单链表(插入操作) 3. 逆序算法处理 4. 打印输出 5. 释放动态创建的单链表