链表
来源:互联网 发布:linux shell 输出日志 编辑:程序博客网 时间:2024/06/05 14:48
1.输入一个链表,从尾到头打印链表每个节点的值
vector<int> printListFromTailToHead(ListNode* head) { vector<int> dst; while (head != nullptr) { dst.push_back(head->val); head = head->next; } reverse(dst.begin(), dst.end());//反转vector return dst; //或者使用反向迭代器 //return vector<int>(dst.rbegin(),dst.rend());}
2.输入一个链表,反转链表后,输出链表
为了效率,这里使用头插法
ListNode* ReverseList(ListNode* pHead) { //头插法 ListNode* dst = nullptr; while (pHead != nullptr) { ListNode* tmp = pHead->next; pHead->next = dst; dst = pHead; pHead = tmp; } return dst;}
3.输入一个链表,输出该链表中倒数第k个结点
//两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走//(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾//的时候,第二个结点所在位置就是倒数第k个节点了ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){ ListNode* first, *second; first = second = pListHead; int i = 0; while (first != nullptr) { if (i >= k) second = second->next; first = first->next; ++i; } return i < k ? nullptr : second;}
4.删除链表中重复的结点
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
//建立一个头结点,就简单了很多ListNode* deleteDuplication(ListNode* pHead){ if (pHead == NULL || pHead->next == NULL) return pHead; /*---------先为链表创建一个头结点---------*/ int firstNumber = pHead->val; //假设我的头结点数值为-1 int myFirst = -1; //万一链表的头结点也为-1,那么我就改成-2 if (myFirst == firstNumber) { myFirst = -2; } ListNode *head = new ListNode(myFirst); head->next = NULL; head->next = pHead; //使用两个指针来对链表进行遍历 ListNode *p = head; ListNode *q = head->next; while (q) { while (q->next && (q->next->val == q->val))//有重复的时候,去掉前面那个值 { q = q->next; } if (p->next != q)//删除重复时候的最后一个,并和p连接起来 { q = q->next; p->next = q; } else { p = q; q = q->next; } } //返回的时候,注意去掉头结点(自己创建的辅助节点) return head->next;}
阅读全文
0 0
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 链表
- 最大似然函数及其求解
- OC NSLog
- java中字符串转集合
- 【HNOI2011】数学作业
- EasyDemo*ViewAnimator及其子类体系结构图(on Github)
- 链表
- 友元类
- Ansible角色定制—roles
- 如何设计一款APP的登录模块
- I/O多路转换 select
- Object-Oriented Technology.pd 英文原版 免费下载
- IOS AFNetworking各种功能封装类
- baidu apollo(1)—启动环境分析
- EasyDemo*ExpandableListView及其子类体系结构图(on Github)