Create a Listlink
- #ifndef List_h__
- #define List_h__
- #include <stdio.h>
- struct ListNode
- {
- int value;
- ListNode* pNext;
- ListNode(int n) :value(n), pNext(nullptr){}
- };
- class ListSolution
- {
- public:
- ListSolution& AddToTail(ListNode** ppHead, int value);
- ListSolution& RemoveNode(ListNode** ppHead, int value);
- ListSolution& RemoveAll(ListNode** ppHead);
- void Print(ListNode* pHead);
- };
- #endif // List_h__
- #include "List.h"
- ListSolution& ListSolution::AddToTail(ListNode** ppHead, int value)
- {
- if (!ppHead)
- {
- return *this;
- }
- ListNode* pNewNode = new ListNode(value);
- if (nullptr == *ppHead)
- {
- *ppHead = pNewNode;
- }
- else
- {
- ListNode* pCurNode = *ppHead;
- while (pCurNode->pNext)
- {
- pCurNode = pCurNode->pNext;
- }
- pCurNode->pNext = pNewNode;
- }
- return *this;
- }
- ListSolution& ListSolution::RemoveNode(ListNode** ppHead, int value)
- {
- if (nullptr == ppHead
- || nullptr == *ppHead)
- {
- return *this;
- }
- ListNode* pDelNode = nullptr;
- if (value == (*ppHead)->value)
- {
- pDelNode = *ppHead;
- *ppHead = (*ppHead)->pNext;
- }
- else
- {
- ListNode* pCurNode = (*ppHead);
- while (pCurNode->pNext && pCurNode->pNext->value != value)
- {
- pCurNode = pCurNode->pNext;
- }
- if (nullptr != pCurNode->pNext && pCurNode->pNext->value == value)
- {
- pDelNode = pCurNode->pNext;
- pCurNode->pNext = pCurNode->pNext->pNext;
- }
- }
- if (pDelNode)
- {
- printf("remove %d\n", pDelNode->value);
- delete pDelNode;
- pDelNode = nullptr;
- }
- return *this;
- }
- ListSolution& ListSolution::RemoveAll(ListNode** ppHead)
- {
- if (nullptr == ppHead
- || nullptr == *ppHead)
- {
- return *this;
- }
- ListNode* pCurNode = *ppHead;
- ListNode* pDelNode = nullptr;
- while (pCurNode->pNext)
- {
- pDelNode = pCurNode->pNext;
- pCurNode->pNext = pCurNode->pNext->pNext;
- printf("remove %d\n", pDelNode->value);
- delete pDelNode;
- pDelNode = nullptr;
- }
- printf("remove %d\n", (*ppHead)->value);
- delete *ppHead;
- *ppHead = nullptr;
- return *this;
- }
- void ListSolution::Print(ListNode* pHead)
- {
- ListNode* pCurNode = pHead;
- while (pCurNode)
- {
- printf(" %d", pCurNode->value);
- pCurNode = pCurNode->pNext;
- }
- printf("\n");
- }
- #include "List.h"
- int main()
- {
- ListSolution s;
- ListNode* pHead = nullptr;
- s.AddToTail(&pHead, );
- s.AddToTail(&pHead, );
- s.AddToTail(&pHead, );
- s.AddToTail(&pHead, );
- s.AddToTail(&pHead, );
- s.AddToTail(&pHead, );
- s.Print(pHead);
- s.RemoveNode(&pHead, );
- s.RemoveNode(&pHead, );
- s.RemoveNode(&pHead, );
- s.Print(pHead);
- s.RemoveAll(&pHead);
- s.AddToTail(nullptr, );
- s.Print(nullptr);
- s.RemoveNode(nullptr, );
- s.RemoveAll(nullptr);
- if (nullptr == pHead)
- {
- printf("pHead == nullptr\n");
- }
- return ;
- }
Create a Listlink的更多相关文章
- 记一次tomcat线程创建异常调优:unable to create new native thread
测试在进行一次性能测试的时候发现并发300个请求时出现了下面的异常: HTTP Status 500 - Handler processing failed; nested exception is ...
- 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 ...
- 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 错误. 总结一下发生错误的原因,一般的 ...
- Create a Team in RHEL7
SOLUTION VERIFIED September 13 2016 KB2620131 Environment Red Hat Enterprise Linux 7 NetworkManager ...
- 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 ...
- [转]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 ...
- Git异常:fatal: could not create work tree dir 'XXX': No such file or directory
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html ———————————————————————————————————————— ...
- SQL Server 在多个数据库中创建同一个存储过程(Create Same Stored Procedure in All Databases)
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 遇到的问题(Problems) 实现代码(SQL Codes) 方法一:拼接SQL: 方法二: ...
- SharePoint 2013 create workflow by SharePoint Designer 2013
这篇文章主要基于上一篇http://www.cnblogs.com/qindy/p/6242714.html的基础上,create a sample workflow by SharePoint De ...
随机推荐
- HTML5桌面通知:notification
最近由于公司业务需要,领导要求IM消息有像网页微信那样有新消息桌面右下角弹出一个提示框的效果!由于自己才疏学浅,一时还没明白微信是怎么实现的!所以只能问百度(因为懒得FQ)咯! 在网上搜索了N久,心都 ...
- 错误: 程序包com.sun.istack.internal不存在
eclipse下maven打包是出现如下错误: [ERROR] D:\code-old\daba_user_mvn\src\main\java\com\dada\transaction\service ...
- HTML中strong与b,em与i标签的区别
先看效果 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- modelsim操作流程
1.File->Change Directory2.File->New->Library 在弹出的对话框中选择 a new library and a logical mapping ...
- JUnit 简介
一.简介 JUnit是一个开源的java单元测试框架.在1997年,由 Erich Gamma 和 Kent Beck 开发完成.这两个牛人中 Erich Gamma 是 GOF 之一:Kent Be ...
- MVC3升级为MVC4
在程序包管理控制台输入 Install-Package UpgradeMvc3ToMvc4 等待 升级完成
- OAF_开发系列20_实现OAF打印功能
ddddd 添加一个页面级的button区域:pagebuttonBar,在之下添加button item ,这里主要设置的参数有:采用默认的oaf的打印按钮的id名称: IcxPrintablePa ...
- OAF_文件系列8_实现OAF处理Excel的JXL包详解
写入/读取Excle,设置打印样式排版,锁定列与行,设置打印标题,给Excle加密. http://www.blogjava.net/xing5156/archive/2011/11/18/36422 ...
- 安装SQL提示重启电脑失败,解决办法
1. 打开注册表, 找到HKEY_LOCAL_MACHINE-->software-->Microsof-->MSSQLServer...统统删掉 2.HKEY_LOCAL_MACH ...
- Tplink客户端设置
之前在JD上面买了个Tplink,将公司的无线网转成有线的给我的台式机用,可是突然就掉线了,怎么配置都不行.甚至按向导去做了,后来连配置界面都进不去.然后又再某宝上面买了两个,回来配置也发现了这个情况 ...