zoukankan      html  css  js  c++  java
  • 链表的基本操作

    链表的基本操作


    • 节点结构体:

    typedef struct Node {
      int element;
      struct Node* next;
    } node;
    
    • 创建一个链表:

    node* createList() {
      node* head = (node*)malloc(sizeof(node));
      head->element = 0;
      head->next = NULL;
      return head;
    }
    

    把一个空的节点当作链表的头会让下面的操作更加容易实现.

    • 插入:

    void insert(int x, node* list) {
      node* current = (node*)malloc(sizeof(node));
      current->element = x;
      current->next = list->next;
      list->next = current;
    }
    

    若不是把一个空的节点当作链表的头,则我们要传进的参数将会是
    (int x, node** list),而现在我们只需要修改list->next就可以把新增节点插入链表头.

    • 删除:

    void del(int x, node* list) {
      node* ptr = list;
    
      // 找到要删除节点的前一个节点
      while (ptr->next != NULL && ptr->next->element != x)
        ptr = ptr->next;
    
      // 如果找不到则返回
      if (ptr->next == NULL)
        return;
    
      // 找到后删除
      node* current = ptr->next;
      ptr->next = current->next;
      free(current);
    }
    
    • 查找:

    node* find(int x, node* list) {
      node* ptr = list->next;
    
      while (ptr != NULL && ptr->element != x)
        ptr = ptr->next;
    
      return ptr;
    }
    
    • 逆序

    void reverse(node* list) {
      node* head = list->next;
      node* temp = NULL;
      
      // 链表不为空
      if (head != NULL) {
        // 第二个node
        node* current = head->next;
        
        // 第一个node将作为尾节点,故指向NULL
        head->next = NULL;
        
        while (current != NULL) {
          temp = current->next;
          current->next = list->next;
          list->next = current;
          current = temp;
        }
      }
    }
    
    
  • 相关阅读:
    湖南省队集训 Day 2
    一句话题解(~ 2020.4.9)
    NOIP 2017 宝藏
    NOIP 2017 逛公园
    bzoj 4767 两双手
    Codeforces Gym 101623E English Restaurant
    浅谈Tarjan算法
    Codeforces 1027F Session in BSU
    Codeforces Gym 101623A Ascending Photo
    2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror) Solution
  • 原文地址:https://www.cnblogs.com/bgmind/p/3982657.html
Copyright © 2011-2022 走看看