美文网首页
链表处理

链表处理

作者: 1nvad3r | 来源:发表于2020-07-25 09:28 被阅读0次
1.创建链表
#include <cstdio>

struct node {
    int data;
    node *next;
};

node *create(int arr[], int n) {
    node *p, *cur, *head;//cur当前结点,head头结点
    head = new node;
    head->next = NULL;//头结点不需要数据域
    cur = head;
    for (int i = 0; i < n; i++) {
        p = new node;
        p->data = arr[i];
        p->next = NULL;
        cur->next = p;
        cur = p;
    }
    return head;
}

int main() {
    int arr[5] = {5, 3, 6, 1, 2};
    node *link = create(arr, 5);
    link = link->next;//从第一个结点开始有数据域
    while (link != NULL) {
        printf("%d", link->data);
        link = link->next;
    }
    return 0;
}
2.查找元素
//返回链表中元素x的个数
int search(node *head, int x) {
    int count = 0;
    node *p = head->next;
    while (p != NULL) {
        if (p->data == x) {
            count++;
        }
        p = p->next;
    }
    return count;
}
3.插入元素
//将x插入链表第pos个位置上
void insert(node *head, int pos, int x) {
    node *p = head;
    for (int i = 0; i < pos - 1; i++) {
        p = p->next;
    }
    node *q = new node;
    q->data = x;
    q->next = p->next;
    p->next = q;
}
4.删除元素
//删除所有数据域为x的结点
void del(node *head, int x) {
    node *p = head->next;
    node *pre = head;//pre始终保存p的前驱
    while (p != NULL) {
        if (p->data == x) {
            pre->next = p->next;
            delete (p);
            p = pre->next;
        } else {
            pre = p;
            p = p->next;
        }
    }
}
5.静态链表
struct Node {
    int data;
    int next;
} node[1000];

1074 Reversing Linked List

1032 Sharing

1052 Linked List Sorting

1097 Deduplication on a Linked List

相关文章

  • 链表处理

    1.创建链表 2.查找元素 3.插入元素 4.删除元素 5.静态链表 1074 Reversing Linked ...

  • 11.20习题

    要求:用指针处理链表,并且用函数处理, 35.创建链表L ,头插法 3 2 1 ,尾插入 5 6 7 并输出链表。...

  • LeetCode-Rotate List

    主要考察对链表的处理:1、确定两个链表的长度2、对这两个链表进行翻转

  • 面试题24:反转链表。

    题目:定义一个函数,输入一个链表的头指针,反转该链表 注意链表的断裂 注意空值处理

  • 链表入门

    相比于数组而言,链表是跳跃式索引的结构。 链表分为带头结点的链表和不带头结点的链表,前者在处理链表为空或仅一个元素...

  • PAT 链表处理

    1.反转链表 注意点: 1.要考虑可能存在的无效结点的情况,即不是由题目给出的头结点引出的单链表上的结点,这些结点...

  • 2021-11-19 jdk8中HashMap的resize方

    只看第三个if:链表处理

  • eetcode第21题合并有序链表

    合并有序链表需要注意边界值:1、链表为空的特殊值需要注意处理

  • HashMap的底层实现

    在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在...

  • JAVA从零开始实现数据结构五:双向链表

    相较于单链表与循环链表,双向链表增加了prior指针在进行增加、插入、删除时需要处理两个指针完整的MyDouble...

网友评论

      本文标题:链表处理

      本文链接:https://www.haomeiwen.com/subject/wlbjlktx.html