【力扣习题】C语言

目录

【876.链表的中间点】

思路:

【83删除排序链表中的重复元素】

思想:

代码:


【876.链表的中间点】
思路:

1、计算链表的长度

2、遍历到链表中间长度并输出值

复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* middleNode(struct ListNode* head) {
    int n = 1;
    struct ListNode* p = malloc(sizeof(struct ListNode));
    p->next = NULL;
    p->val = head->val;
    p = head;
    while(p->next != NULL)
    {
        p = p->next;
        n++;    
    }
    
    if(n==1)
    {
        return head;
    }
    
    int k = n/2;
    struct ListNode *q = head;
    while(k--)
    {
        q = q->next;
        
    }
    printf("%d\n",q->val);
    head = q;
   
 
    return head;
}
【83删除排序链表中的重复元素】
思想:

1、如果链表为空,返回NULL

2、遍历判断是否相等,相等跳过

代码:
复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) {
    if(head==NULL)
    {
        return NULL;
    }
    struct ListNode* p = malloc(sizeof(struct ListNode));
    p->next = NULL;
    p->val = head->val;
    p = head;    
    
    while(p->next)
    {
        if(p->val == p->next->val)
        {
            p->next = p->next->next;
        }
        else
        {
            p= p->next;
        }                     
    }
    return head;
}
相关推荐
KobeSacre2 分钟前
将有序数组转换为二叉搜索树
数据结构·算法·leetcode
叼烟扛炮4 分钟前
【C 语言系统入门教程】第 19 讲:数据在内存中的存储 | 零基础学习笔记
c语言·学习·数据存储·原码反码补码·大小端字节序·浮点数存储
脱氧核糖核酸__4 分钟前
LeetCode热题100——160.相交链表(两种解法)
算法·leetcode·链表
碧海银沙音频科技研究院9 分钟前
博通BK7258原生语音识别与dump功能功能实现
人工智能·深度学习·算法
handler019 小时前
从源码到二进制:深度拆解 Linux 下 C 程序的编译与链接全流程
linux·c语言·开发语言·c++·笔记·学习
不爱吃炸鸡柳10 小时前
数据结构精讲:树 → 二叉树 → 堆 从入门到实战
开发语言·数据结构
Aurorar0rua10 小时前
CS50 x 2024 Notes C - 05
java·c语言·数据结构
棋子入局11 小时前
C语言制作消消乐游戏(2)
c语言·开发语言·游戏
6Hzlia11 小时前
【Hot 100 刷题计划】 LeetCode 739. 每日温度 | C++ 逆序单调栈
c++·算法·leetcode