zoukankan      html  css  js  c++  java
  • 从单向链表中删除指定值的节点

    题目描述

    输入一个单向链表和一个节点的值,从单向链表中删除等于该值的节点,删除后如果链表中无节点则返回空指针。

    链表结点定义如下:

    struct ListNode

    {

          int       m_nKey;

          ListNode* m_pNext;

    };

    详细描述:

    本题为考察链表的插入和删除知识。

    链表的值不能重复

    构造过程,例如

    1 -> 2

    3 -> 2

    5 -> 1

    4 -> 5

    7 -> 2

    最后的链表的顺序为 2 7 3 1 5 4 

    删除 结点 2 

    则结果为 7 3 1 5 4 

     输入描述:

    1 输入链表结点个数
    2 输入头结点的值
    3 按照格式插入各个结点
    4 输入要删除的结点的值

    输出描述:

    输出删除结点后的序列

    输入例子:
    5
    2
    3 2
    4 3
    5 2
    1 4
    3

    输出例子:
    2 1 5 4
     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 struct ListNode
     6 {
     7     int m_nKey;
     8     ListNode *m_pNext;
     9 };
    10 
    11 int main()
    12 {
    13     int num;
    14     while (cin >> num)
    15     {
    16         int value,value1,value2;
    17         cin >> value;
    18         ListNode * head = (ListNode*)malloc(sizeof(ListNode));
    19         head->m_nKey = value;
    20         head->m_pNext = NULL;
    21         ListNode *p=NULL;
    22 
    23         for (int i = 1; i < num; i++)
    24         {
    25             cin >> value1 >> value2;
    26             p = head;
    27 
    28             while (p->m_nKey != value2)
    29             {
    30                 p = p->m_pNext;
    31             }
    32             if (p->m_pNext == NULL)
    33             {
    34                 ListNode *q = (ListNode*)malloc(sizeof(ListNode));
    35                 q->m_nKey = value1;
    36                 q->m_pNext = NULL;
    37                 p->m_pNext = q;
    38             }
    39             else
    40             {
    41                 ListNode *q = new ListNode();
    42                 q->m_nKey = value1;
    43                 q->m_pNext = p->m_pNext;
    44                 p->m_pNext = q;
    45             }
    46             
    47         }
    48 
    49         int del_value;
    50         cin >> del_value;
    51         p = head;
    52         if (p->m_nKey == del_value)
    53         {
    54             head = p->m_pNext;
    55         }
    56         while (p->m_pNext != NULL)
    57         {
    58             if (p->m_pNext->m_nKey == del_value)
    59             {
    60                 p->m_pNext = p->m_pNext->m_pNext;
    61                 break;
    62             }
    63             else
    64             {
    65                 p = p->m_pNext;
    66             }
    67         }
    68 
    69         p = head;
    70         while (p != NULL)
    71         {
    72             cout << p->m_nKey <<' ';
    73             p = p->m_pNext;
    74         }
    75         cout << endl;
    76     }
    77     
    78     
    79     
    80     return 0;
    81 }



  • 相关阅读:
    javascript获取当前url
    外贸电子商务网站之Prestashop 安装后台中文语言包
    外贸电子商务网站之Prestashop paypal支付添加
    外贸电子商务网站之Prestashop 语言包安装
    PHPCMS快速建站系列之邮箱验证
    display: none;、visibility: hidden、opacity=0区别总结
    facebook第三方登录
    PHPCMS V9静态化HTML生成设置及URL规则优化
    Phpcms V9全站伪静态设置方法
    MySQL命令输入错误 取消命令
  • 原文地址:https://www.cnblogs.com/hhboboy/p/5552291.html
Copyright © 2011-2022 走看看