zoukankan      html  css  js  c++  java
  • 链表的插入、删除

    结构体:

    1 typedef struct Student{
    2     int m_val;
    3     struct Student* m_next;
    4 }NODE,*pNODE;

    链表的插入:

     1 //尾部插入
     2 void linkInitTail(pNODE* pphead)
     3 {
     4     int val;
     5     pNODE pNew,pTail;
     6     while(scanf("%d",&val) == 1)
     7     {
     8         pNew = (pNODE)calloc(1,sizeof(NODE));
     9         pNew->m_val = val;
    10         if(*pphead == NULL)
    11         {
    12             *pphead = pNew;
    13             pTail = pNew;
    14         }
    15         else
    16         {
    17             pTail->m_next = pNew;
    18             pTail = pNew;
    19         }
    20     }
    21     pTail = NULL;
    22 }
    23 
    24 //头部插入,不需记录尾部结点
    25 void linkInitHead(pNODE* pphead)
    26 {
    27     pNODE pNew;
    28     int val;
    29     while(scanf("%d",&val) == 1)
    30     {
    31         pNew = (pNODE)calloc(1,sizeof(NODE));
    32         pNew->m_val = val;
    33         pNew->m_next = *pphead;
    34         *pphead = pNew;
    35     }
    36 }
    37 //有序插入
    38 void linkInitOrder(pNODE* pphead)
    39 {
    40     pNODE pNew,pPrevious,pCurrent;
    41     int val;
    42     while(scanf("%d",&val) == 1)
    43     {
    44         pNew = (pNODE)calloc(1,sizeof(NODE));
    45         pNew->m_val = val;
    46 
    47         pCurrent = *pphead;
    48         pPrevious = NULL;
    49 
    50         while(pCurrent && pCurrent->m_val < pNew->m_val)
    51         {
    52             pPrevious = pCurrent;
    53             pCurrent = pCurrent->m_next;
    54         }
    55         if(pPrevious == NULL)
    56         {
    57             pNew->m_next = *pphead;
    58             *pphead = pNew;
    59         }
    60         else
    61         {
    62             pNew->m_next = pCurrent;
    63             pPrevious->m_next = pNew;
    64         }
    65     }
    66 }

    链表的删除:

     1 void linkDelete(pNODE* pphead, int value)
     2 {
     3     pNODE pPrevious = NULL, pCurrent = *pphead;
     4     while(pCurrent && pCurrent->m_val != value)
     5     {
     6         pPrevious = pCurrent;
     7         pCurrent = pCurrent->m_next;
     8     }
     9     if(pCurrent == NULL)
    10         printf("Not exist!");
    11     else
    12     {
    13         if(pPrevious == NULL)//删去头结点
    14         {
    15             *pphead = pCurrent->m_next;
    16             free(pCurrent);
    17         }
    18         else
    19         {
    20             pPrevious->m_next = pCurrent->m_next;
    21             free(pCurrent);
    22         }
    23     }
    24 
    25 }
  • 相关阅读:
    ubuntu国内镜像源
    windows安装Pygraphviz
    python dict与collections.defaultdict的区别
    python生成 requirements.txt文件
    python list 和 dict前加星号
    Ubuntu安装Docker
    Zookeeper核心概念及读写流程
    docker安装mysql5和mysql8
    ubuntu docker更改默认镜像和容器存储位置
    训练篇-胸
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4430266.html
Copyright © 2011-2022 走看看