1. #ifndef List_h__
  2. #define List_h__
  3.  
  4. #include <stdio.h>
  5.  
  6. struct ListNode
  7. {
  8. int value;
  9. ListNode* pNext;
  10. ListNode(int n) :value(n), pNext(nullptr){}
  11. };
  12.  
  13. class ListSolution
  14. {
  15. public:
  16. ListSolution& AddToTail(ListNode** ppHead, int value);
  17. ListSolution& RemoveNode(ListNode** ppHead, int value);
  18. ListSolution& RemoveAll(ListNode** ppHead);
  19. void Print(ListNode* pHead);
  20. };
  21.  
  22. #endif // List_h__
  1. #include "List.h"
  2.  
  3. ListSolution& ListSolution::AddToTail(ListNode** ppHead, int value)
  4. {
  5. if (!ppHead)
  6. {
  7. return *this;
  8. }
  9.  
  10. ListNode* pNewNode = new ListNode(value);
  11.  
  12. if (nullptr == *ppHead)
  13. {
  14. *ppHead = pNewNode;
  15. }
  16. else
  17. {
  18. ListNode* pCurNode = *ppHead;
  19. while (pCurNode->pNext)
  20. {
  21. pCurNode = pCurNode->pNext;
  22. }
  23.  
  24. pCurNode->pNext = pNewNode;
  25. }
  26.  
  27. return *this;
  28. }
  29.  
  30. ListSolution& ListSolution::RemoveNode(ListNode** ppHead, int value)
  31. {
  32. if (nullptr == ppHead
  33. || nullptr == *ppHead)
  34. {
  35. return *this;
  36. }
  37.  
  38. ListNode* pDelNode = nullptr;
  39. if (value == (*ppHead)->value)
  40. {
  41. pDelNode = *ppHead;
  42. *ppHead = (*ppHead)->pNext;
  43. }
  44. else
  45. {
  46. ListNode* pCurNode = (*ppHead);
  47. while (pCurNode->pNext && pCurNode->pNext->value != value)
  48. {
  49. pCurNode = pCurNode->pNext;
  50. }
  51.  
  52. if (nullptr != pCurNode->pNext && pCurNode->pNext->value == value)
  53. {
  54. pDelNode = pCurNode->pNext;
  55. pCurNode->pNext = pCurNode->pNext->pNext;
  56. }
  57. }
  58.  
  59. if (pDelNode)
  60. {
  61. printf("remove %d\n", pDelNode->value);
  62. delete pDelNode;
  63. pDelNode = nullptr;
  64. }
  65.  
  66. return *this;
  67. }
  68.  
  69. ListSolution& ListSolution::RemoveAll(ListNode** ppHead)
  70. {
  71. if (nullptr == ppHead
  72. || nullptr == *ppHead)
  73. {
  74. return *this;
  75. }
  76.  
  77. ListNode* pCurNode = *ppHead;
  78. ListNode* pDelNode = nullptr;
  79. while (pCurNode->pNext)
  80. {
  81. pDelNode = pCurNode->pNext;
  82. pCurNode->pNext = pCurNode->pNext->pNext;
  83.  
  84. printf("remove %d\n", pDelNode->value);
  85. delete pDelNode;
  86. pDelNode = nullptr;
  87. }
  88.  
  89. printf("remove %d\n", (*ppHead)->value);
  90. delete *ppHead;
  91. *ppHead = nullptr;
  92.  
  93. return *this;
  94. }
  95.  
  96. void ListSolution::Print(ListNode* pHead)
  97. {
  98. ListNode* pCurNode = pHead;
  99. while (pCurNode)
  100. {
  101. printf(" %d", pCurNode->value);
  102. pCurNode = pCurNode->pNext;
  103. }
  104.  
  105. printf("\n");
  106. }
  1. #include "List.h"
  2.  
  3. int main()
  4. {
  5. ListSolution s;
  6. ListNode* pHead = nullptr;
  7.  
  8. s.AddToTail(&pHead, );
  9. s.AddToTail(&pHead, );
  10. s.AddToTail(&pHead, );
  11. s.AddToTail(&pHead, );
  12. s.AddToTail(&pHead, );
  13. s.AddToTail(&pHead, );
  14. s.Print(pHead);
  15. s.RemoveNode(&pHead, );
  16. s.RemoveNode(&pHead, );
  17. s.RemoveNode(&pHead, );
  18. s.Print(pHead);
  19. s.RemoveAll(&pHead);
  20.  
  21. s.AddToTail(nullptr, );
  22. s.Print(nullptr);
  23. s.RemoveNode(nullptr, );
  24. s.RemoveAll(nullptr);
  25.  
  26. if (nullptr == pHead)
  27. {
  28. printf("pHead == nullptr\n");
  29. }
  30.  
  31. return ;
  32. }

Create a Listlink的更多相关文章

  1. 记一次tomcat线程创建异常调优:unable to create new native thread

    测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...

  2. Could not create SSL connection through proxy serve-svn

    RA layer request failedsvn: Unable to connect to a repository at URL xxxxxx 最后:Could not create SSL ...

  3. android 使用Tabhost 发生could not create tab content because could not find view with id 错误

    使用Tabhost的时候经常报:could not create tab content because could not find view with id 错误. 总结一下发生错误的原因,一般的 ...

  4. Create a Team in RHEL7

    SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...

  5. Create a bridge using a tagged vlan (8021.q) interface

    SOLUTION VERIFIED April 27 2013 KB26727 Environment Red Hat Enterprise Linux 5 Red Hat Enterprise Li ...

  6. [转]nopCommerce Widgets and How to Create One

    本文转自:https://dzone.com/articles/what-are-nopcommerce-widgets-and-how-to-create-one A widget is a sta ...

  7. Git异常:fatal: could not create work tree dir 'XXX': No such file or directory

    GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...

  8. SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...

  9. SharePoint 2013 create workflow by SharePoint Designer 2013

    这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...

随机推荐

  1. HTML5桌面通知:notification

    最近由于公司业务需要,领导要求IM消息有像网页微信那样有新消息桌面右下角弹出一个提示框的效果!由于自己才疏学浅,一时还没明白微信是怎么实现的!所以只能问百度(因为懒得FQ)咯! 在网上搜索了N久,心都 ...

  2. 错误: 程序包com.sun.istack.internal不存在

    eclipse下maven打包是出现如下错误: [ERROR] D:\code-old\daba_user_mvn\src\main\java\com\dada\transaction\service ...

  3. HTML中strong与b,em与i标签的区别

    先看效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...

  4. modelsim操作流程

    1.File->Change Directory2.File->New->Library 在弹出的对话框中选择 a new library and a logical mapping ...

  5. JUnit 简介

    一.简介 JUnit是一个开源的java单元测试框架.在1997年,由 Erich Gamma 和 Kent Beck 开发完成.这两个牛人中 Erich Gamma 是 GOF 之一:Kent Be ...

  6. MVC3升级为MVC4

    在程序包管理控制台输入 Install-Package UpgradeMvc3ToMvc4 等待 升级完成

  7. OAF_开发系列20_实现OAF打印功能

    ddddd 添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePa ...

  8. OAF_文件系列8_实现OAF处理Excel的JXL包详解

    写入/读取Excle,设置打印样式排版,锁定列与行,设置打印标题,给Excle加密. http://www.blogjava.net/xing5156/archive/2011/11/18/36422 ...

  9. 安装SQL提示重启电脑失败,解决办法

    1. 打开注册表, 找到HKEY_LOCAL_MACHINE-->software-->Microsof-->MSSQLServer...统统删掉 2.HKEY_LOCAL_MACH ...

  10. Tplink客户端设置

    之前在JD上面买了个Tplink,将公司的无线网转成有线的给我的台式机用,可是突然就掉线了,怎么配置都不行.甚至按向导去做了,后来连配置界面都进不去.然后又再某宝上面买了两个,回来配置也发现了这个情况 ...