【力扣习题】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;
}
相关推荐
叶子爱分享2 分钟前
经典排序算法之归并排序(Merge Sort)
算法·排序算法
珹洺8 分钟前
C++算法竞赛篇:DevC++ 如何进行debug调试
java·c++·算法
Norvyn_717 分钟前
LeetCode|Day18|20. 有效的括号|Python刷题笔记
笔记·python·leetcode
神仙别闹1 小时前
基于C#+SQL Server实现(Web)学生选课管理系统
前端·数据库·c#
呆呆的小鳄鱼1 小时前
leetcode:冗余连接 II[并查集检查环][节点入度]
算法·leetcode·职场和发展
墨染点香1 小时前
LeetCode Hot100【6. Z 字形变换】
java·算法·leetcode
沧澜sincerely1 小时前
排序【各种题型+对应LeetCode习题练习】
算法·leetcode·排序算法
CQ_07121 小时前
自学力扣:最长连续序列
数据结构·算法·leetcode
弥彦_1 小时前
cf1925B&C
数据结构·算法
Y4090011 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记