Reverse Linked List+链表复习
2016-05-03 23:33
288 查看
这个题感觉很简单,但是实际做还是花了一些功夫。顺带着回顾一下链表
1、创建链表
2、遍历链表
leetcode题目:翻转一个单向链表
1、创建链表
<pre name="code" class="html">struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; int main(){ ListNode* head=new ListNode(0); //创建第一个链表节点 <span style="white-space:pre"> </span>ListNode* key = head; //标记链表头的位置 <span style="white-space:pre"> </span>int i; <span style="white-space:pre"> </span>for (i = 1; i < 5; i++){ <span style="white-space:pre"> </span>ListNode* key = new ListNode(i);//创建链表节点 <span style="white-space:pre"> </span>head->next = key; <span style="white-space:pre"> </span>head = key; <span style="white-space:pre"> </span>} }
2、遍历链表
while (head!= NULL){ cout << head->val << endl; //输出链表内容 head = head->next; }
leetcode题目:翻转一个单向链表
class Solution { public: ListNode* reverseList(ListNode* head) { ListNode *key1; ListNode *key2; ListNode *key3; if (head == NULL||head->next==NULL){ return head; } key1= head; key3 = head; while ((head->next)!= NULL){ //key2指向head当前地址,head指向其下一个地址。通过key2将当前节点指向上一个节点(key1指向) key2 = head; head = head->next; key2->next = key1; key1 = key2; } head->next = key1;//容易遗忘,因为循环条件,必须单独让最后的head指向上一个节点 key3->next = NULL;//同上,key3指向最初的head初始位置。反向后下一个地址指向NULL return head; } };
相关文章推荐
- 使用AsyncHttpClient获取Session 问题汇总
- JDK源码分析之集合04HashMap
- Git工具的使用
- MAC 钥匙串访问
- PHP引用&的使用
- JDBC技术总结(一)
- 设计模式之工厂设计模式简单实践
- linux命令行中显示redis的中文编码
- android第一行代码-6.自定义控件的实现
- Collection集合总结
- 我的GitHub体验
- 将启动命令中包含某个字符串的进行杀死
- [android] 切换按钮-自定义控件-拖动效果
- 状态模式-c++实现
- 【MATLAB】image和imshow这俩小妖精的事。。
- 多线程——线程的生命周期
- shell遍历目录下所有文件
- Android中的5种数据存储方式
- 2016年5月03日
- Apache Maven项目提供的WAR插件详解