LeeCode-数据结构-day8-链表
admin
2024-03-28 16:28:53
0

day8-链表

1、反转链表

  1. 描述

    给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:
    输入:head = [1,2,3,4,5]
    输出:[5,4,3,2,1]
    示例 2:
    输入:head = [1,2]
    输出:[2,1]
    示例 3:
    输入:head = []
    输出:[] 提示:链表中节点的数目范围是 [0, 5000]
    -5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?
    
  2. 思路

    指针分别指向前中后三个node,将next指向pre结点

  3. 代码

    #include 
    using namespace std;
    #include struct  ListNode
    {int val;ListNode *next;ListNode():val(0),next(nullptr) {}ListNode(int x):val(x),next(nullptr) {}ListNode(int x, ListNode *next):val(x),next(next) {}
    };class Solution {
    public:ListNode* reverseList(ListNode* head) {ListNode *pre;ListNode *cur;ListNode *nxt;if(!head || !head->next)     return head;cur = head->next;pre = head;head->next = nullptr;while(cur) {nxt = cur->next;// if(!nxt)    printf("nxt: %d  ",nxt->val);if(!cur)printf("pre: %d   cur:  %d\n",pre->val,cur->val);cur->next = pre;pre = cur;cur = nxt;if(!cur&&!pre)printf("==>>pre: %d   cur:  %d\n",pre->val,cur->val);}head = pre;return head;}
    };int main() {ListNode *head = new ListNode;ListNode *p;p = head;vector num = {};for(int i = 0; i < num.size(); i++) {ListNode *tmp = new ListNode(num[i]);head->next = tmp;head = head->next;}Solution sol;p = sol.reverseList(p->next);while (p){printf("%d  ->  ",p->val);p = p->next;}printf("\n");return 0;
    }
    

2、删除排序列表的重复元素

  1. 描述

    给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。示例 1:
    输入:head = [1,1,2]
    输出:[1,2]
    示例 2:
    输入:head = [1,1,2,3,3]
    输出:[1,2,3]提示:
    链表中节点数目在范围 [0, 300] 内
    -100 <= Node.val <= 100
    题目数据保证链表已经按升序 排列
    
  2. 思路

    当前结点与下个结点比较,相同则删,不同则遍历下一个

  3. 代码

    #include 
    using namespace std;
    #include struct ListNode {int val;ListNode *next;ListNode() : val(0), next(nullptr) {}ListNode(int x) : val(x), next(nullptr) {}ListNode(int x, ListNode *next) : val(x), next(next) {}
    };class Solution {
    public:ListNode* deleteDuplicates(ListNode* head) {ListNode *cur;ListNode *nxt;if(!head || !head->next)    return head;cur = head;nxt = head->next;while (cur && cur->next) {if(cur->val == nxt->val) {ListNode *tmp;tmp = nxt;nxt = nxt->next;tmp->next = nullptr;delete tmp;cur->next = nxt;} else {cur = nxt;nxt = nxt->next;}}return head;}
    };int main() {ListNode *head = new ListNode;ListNode *p;p = head;vector num = {1,1,2,3,3};for(int i = 0; i < num.size(); i++) {ListNode *tmp = new ListNode(num[i]);p->next = tmp;p = p->next;}Solution sol;p = sol.deleteDuplicates(head->next);while (p){printf("%d  -->  ",p->val);p = p->next;}printf("\n");    return 0;
    }
    

相关内容

热门资讯

梦幻之星4组合技是只要组合对就... 梦幻之星4组合技是只要组合对就出吗 还是看情况的 随即出现的?特定的,比如烈焰龙卷,必须要风系+火系...
灼眼的夏娜里面 红世之徒 灼眼的夏娜里面 红世之徒灼眼的夏娜里面 红世之徒到底好人还是坏人啊...有好的也有坏的,很个性化的一...
褔慧双全是什么意思? 褔慧双全是什么意思?福慧双全是一个组合词,意思是福德和智慧都齐全。一、福慧释义:福德与智慧。引证:周...
仙剑奇侠传1为赵灵儿做药,鲤鱼... 仙剑奇侠传1为赵灵儿做药,鲤鱼是怎么捕的?谁知道?请教教我!找不到渔夫家白河村~ #出来后往右进入一...
今生是夫妻,前世是什么呢? 今生是夫妻,前世是什么呢?我只知道,如果今生是情人,那么前世可能是恩人,那么夫妻呢?是不是今生是兄妹...
怎样成为一个快递员 怎样成为一个快递员嗯,怎样和快递公司联系,好当吗,用不用面试?自己选择区域还是快递公司给分部谢谢!要...
励志对偶名言 励志对偶名言我需要10局 励志的对偶句名言~1.书山有路勤为径,书海无涯苦作舟。2.成分破浪会有时,...
八年了依旧忘不了她,有形容苦恋... 八年了依旧忘不了她,有形容苦恋多年的诗句吗,谢谢大神年轻时我们放弃,以为那只是一段感情。后来才知道,...
与世界干杯!第35届青岛国际啤... 7月18日,外国友人在青岛西海岸新区金沙滩啤酒城内参加第35届青岛国际啤酒节。新华社记者 李紫恒 摄...
原创 老... 标题:老奶奶街头卖小吃,一卖就是55年,买了6套房子,小吃一份才2元钱。 在这个快节奏的时代,我们...
原创 这... 标题:这种做法有点怪,不炒也不煎,但端出来好吃又好看,孩子特爱吃。 在美食的世界里,有一种做法既非...
原创 记... 标题:记忆中的味道,好吃又便宜的零食!尤其第4种,早已消失了! 在繁忙的都市生活中,我们总是在寻找...
原创 街... 标题:街头小吃,慎吃为妙 在熙熙攘攘的街头巷尾,那些色彩斑斓、香气扑鼻的小吃总能瞬间抓住行人的目光...
原创 豆... 标题:豆浆小猪馒头,自己做的自我感觉良好,比外面买的好吃 在这个快节奏的时代,我们总是在寻找一种简...
原创 舌... 探寻九江美食红烧狮子头:又名砂钵狮子头、葵花肉丸等,是淮扬菜系中的传统名菜。它起源于南北朝时期的“跳...
《三体》里的钢印族后来怎么样了... 《三体》里的钢印族后来怎么样了?现在看完三体2,还没发现钢印族的发展动向,那么多钢印族都解散了?没有...
婚姻八字真的有那么重要吗?呵呵... 婚姻八字真的有那么重要吗?呵呵!该不该相信!信了我们就不能在一起!人定胜天,如果真爱那点挫折算不了什...
小学生卡拉OK歌曲 小学生卡拉OK歌曲   不要爱情的,尽量好听点的,节奏不要太慢,也不要太快。我朋友要比赛了,我得帮帮...
谁能讲个故事让我哭,我给他(她... 谁能讲个故事让我哭,我给他(她)5分这是个真实的故事。神秘水晶心哭了。
征集3首童谣 征集3首童谣我觉得像这种老师布置的作业还是自己编写会更有意思。读唐诗你总会吧。所有大的超市都有买书租...