#include <stdio.h>
#include <stdlib.h>

// 定义单链表结构体
typedef struct ListNode {
    int val;
    struct ListNode* next;
} ListNode;

// 创建单链表
ListNode* createList(int* arr, int size) {
    if (size == 0) {
        return NULL;
    }
    ListNode* head = (ListNode*)malloc(sizeof(ListNode));
    head->val = arr[0];
    head->next = NULL;
    ListNode* prev = head;
    for (int i = 1; i < size; i++) {
        ListNode* node = (ListNode*)malloc(sizeof(ListNode));
        node->val = arr[i];
        node->next = NULL;
        prev->next = node;
        prev = node;
    }
    return head;
}

// 删除单链表中的重复元素
ListNode* deleteDuplicates(ListNode* head) {
    if (head == NULL) {
        return NULL;
    }
    ListNode* prev = head;
    ListNode* curr = head->next;
    while (curr != NULL) {
        if (curr->val == prev->val) {
            prev->next = curr->next;
            free(curr);
            curr = prev->next;
        } else {
            prev = curr;
            curr = curr->next;
        }
    }
    return head;
}

// 打印单链表
void printList(ListNode* head) {
    while (head != NULL) {
        printf("%d ", head->val);
        head = head->next;
    }
    printf("\n");
}

int main() {
    int arr[] = {1, 2, 2, 3, 3, 3, 4, 5, 5, 6};
    int size = sizeof(arr) / sizeof(arr[0]);
    ListNode* head = createList(arr, size);
    printf("Original list: ");
    printList(head);
    head = deleteDuplicates(head);
    printf("List after deletion of duplicates: ");
    printList(head);
    return 0;
}
将单链表中重复元素删除每个重复元素只保留一个用c语言数据结构规范写出完整程序

原文地址: https://www.cveoy.top/t/topic/buqT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录