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 }
  • 相关阅读:
    转!idea 破解版 安装
    原!!自动备份 发布脚本
    原!linux脚本统计
    转!!mybatis xml 传值 if test判断
    转!mysql备份与还原数据库
    转!mysql 命令行下 通过DELIMITER临时改变语句分隔符 执行存储过程
    原!统计文件 包含关键字 数量
    原!mysql存储过程 批量导入数据
    转!!Linux 里的 2>&1 究竟是什么
    原!linux 监控 jar定时任务 挂了重启 脚本
  • 原文地址:https://www.cnblogs.com/cpsmile/p/4430266.html
Copyright © 2011-2022 走看看