IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode-83-删除排序列表中的重复元素-C语言 -> 正文阅读

[数据结构与算法]leetcode-83-删除排序列表中的重复元素-C语言

题目:
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。

示例 1:
输入:head = [1,1,2]
输出:[1,2]

示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]

提示:
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序排列

思路:
步骤一:判断NULL是否为空。
步骤二:用t_head和t两个指针一前一后遍历单链表,如果元素相同,则删除当前t所指结点;
步骤三:如果两个指针所指元素不同,则两个指针同时向后移动,直到t==NULL,返回head。

notice:

  1. 单链表初始化需要用指针变量逐个赋值;
  2. 注意操作单链表时,需要进行判空操作;
  3. 单链表结束标志,t==NULL;

代码如下:

#include<stdio.h>
#include<stdlib.h>
//Definition for singly-linked list.
 typedef struct ListNode {
    int val;
    struct ListNode *next;
  }listnode;
int main()
{
    //进行函数声明
    struct ListNode* deleteDuplicates(struct ListNode* head);
    //进行指针的空间分配
    listnode *head=(listnode *)malloc(sizeof(listnode));
    //定义一个指针指向head,用于给它初始化
    listnode *t=head;
    int i;
    for(i=1;i<7;i++)
    {
        //声明一个指针变量,用于接收初值给t
        listnode *c=(listnode *)malloc(sizeof(listnode));
        c->val=i/2;
        c->next=NULL;//指针c只带有一个元素,最后指向NULL
        t->next=c;
        t=t->next;
        free(c);//释放指针c
    }
    listnode *s=(listnode *)malloc(sizeof(listnode)*300);
    s=deleteDuplicates(head);
    s=s->next;//因为s头结点是一个地址,所以取值从下一个位置开始
    while (s) {
        printf("%d\t",s->val);
         s=s->next;
    }
    return 0;
}
//存在一个按升序排列的链表,给你这个链表的头节点 head ,
//请你删除所有重复的元素,使每个元素 只出现一次 。
//返回同样按升序排列的结果链表。
struct ListNode* deleteDuplicates(struct ListNode* head){
    //t用来遍历单链表,t_head始终指向t的前一个位置
   struct ListNode *t=head;
   struct ListNode *t_head=head;
   //如果head为空,那么就直接返回NULL
   if(head==NULL)
        return head;
    t=t->next;
    while(t){
            //如果一个位置元素与前一个位置元素相同,那么删除该结点
        if(t->val==t_head->val)
        {
            //用c来记录被删除结点
            struct ListNode *c=(struct ListNode *)malloc(sizeof(struct ListNode));
            c=t;
            t=t->next;
            t_head->next=t;
            free(c);
        }
        else
        {
            //如果该结点元素不需要被删除,则指针t,t_head都向后移一位
            t=t->next;
            t_head=t_head->next;
        }
    }
    return head;

}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:50:26  更:2021-09-24 10:54:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:52:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码