list
来源:互联网 发布:哪个软件卖奢侈品 编辑:程序博客网 时间:2024/05/09 06:54
简单list类
#ifndef __COMMANDER_LIST_H__#define __COMMANDER_LIST_H__namespace COMMANDER_NAMESPACE{#include <stdio.h>#include <stdlib.h>typedef int DataType;//一次分配节点struct node {struct node *prev;struct node *next;DataType data;};class list{public:list();~list();bool push_back(DataType &data);bool push_front(DataType &data);bool pop_back();bool pop_front();DataType get_back();DataType get_front();void PrintListFromHeadToEnd();unsigned int RemoveByData(DataType &data);void Empty();private:private:struct node *m_pHead;struct node *m_pLast;size_t m_uiSize;};};#endif
#ifndef __COMMANDER_LIST_CPP__#define __COMMANDER_LIST_CPP__#include "Commander_List.h"namespace COMMANDER_NAMESPACE{COMMANDER_NAMESPACE::list::list(){m_pHead = m_pLast = NULL;m_uiSize = 0;}COMMANDER_NAMESPACE::list::~list(){COMMANDER_NAMESPACE::list::Empty();}bool COMMANDER_NAMESPACE::list::push_back(DataType &data){struct node * pTemp = (struct node *)malloc(sizeof(node));if (pTemp == NULL) return false;pTemp->data = data;pTemp->next = NULL;pTemp->prev = NULL;if (m_pHead == NULL) {m_pHead = m_pLast = pTemp;m_uiSize++;return true;}if (m_pLast == NULL) return false;m_pLast->next = pTemp;pTemp->prev = m_pLast;m_pLast = m_pLast->next;m_uiSize++;pTemp = NULL;return true;}bool COMMANDER_NAMESPACE::list::push_front(DataType &data){struct node * pTemp = (struct node *)malloc(sizeof(node));if (pTemp == NULL) return false;pTemp->data = data;pTemp->next = pTemp->prev = NULL;if (m_pHead == NULL) {m_pHead = m_pLast = pTemp;m_uiSize++;return true;}if (m_pHead == NULL) return false;pTemp->next = m_pHead;m_pHead->prev = pTemp;m_pHead = pTemp;pTemp = NULL;m_uiSize++;return true;}bool COMMANDER_NAMESPACE::list::pop_back(){if (m_pLast == NULL) return false;struct node *pFree = m_pLast;m_pLast = m_pLast->prev;if (m_pLast != NULL) m_pLast->next = NULL;free(pFree);pFree = NULL;m_uiSize--;if (m_pLast == NULL) m_pHead = NULL;return true;}typedef int DataType;bool COMMANDER_NAMESPACE::list::pop_front(){if (m_pHead == NULL) return false;struct node *pFree = m_pHead;m_pHead = m_pHead->next;if (m_pHead != NULL) m_pHead->prev = NULL;free(pFree);pFree = NULL;m_uiSize--;if (m_pHead == NULL) m_pLast = NULL;return true;}DataType COMMANDER_NAMESPACE::list::get_back(){if (m_pLast != NULL) return m_pLast->data;}DataType COMMANDER_NAMESPACE::list::get_front(){if (m_pHead != NULL) return m_pHead->data;}unsigned int COMMANDER_NAMESPACE::list::RemoveByData(DataType &data){struct node *pCur = m_pHead, *pTemp = m_pHead;unsigned int uiRet = 0;while (pCur != NULL){pTemp = pCur->next;if (pCur->data == data){if (pCur->prev == NULL) {//头节点m_pHead = pCur->next;//并非只有一个节点时if (m_pHead != NULL) m_pHead->prev = NULL;}else if (m_pLast == pCur) {//最后节点m_pLast = pCur->prev;m_pLast->next = NULL;}else {//中间节点pCur->prev->next = pCur->next;pCur->next->prev = pCur->prev;}free(pCur);pCur = NULL;uiRet++;m_uiSize--;}//if_pCurpCur = pTemp;}//while_pCurreturn uiRet;}void COMMANDER_NAMESPACE::list::Empty(){struct node *pTemp = m_pHead;while (m_pHead != NULL) {pTemp = m_pHead;m_pHead = m_pHead->next;free(pTemp);}m_pHead = m_pLast = NULL;m_uiSize = 0;}void COMMANDER_NAMESPACE::list::PrintListFromHeadToEnd(){struct node *pTemp = m_pHead;printf("\nthe list is:\n");while (pTemp != NULL) {printf("%d", pTemp->data);printf(pTemp != m_pLast ? " -> " : "\n");pTemp = pTemp->next;}}}#endif
- List
- list
- List
- LIST
- list
- list
- List
- list
- list
- List
- list
- LIST
- List
- List
- List
- list
- list
- list
- AsyncTask的源码分析 与 使用 之我的浅解
- Dojo class中跟变量相关的几个问题
- Fire an event manually
- 关于 Android中googleMaps的Geocoder, “the service is not available”解决办法
- 人生致命的八个经典问题
- list
- audacious音乐播放器的安装相关问题
- jQuery Tools使用
- ERROR:Could not find *.apk!的解决方案。
- JSP 标准标签库 JSTL 3
- 个人理解函数返回局部变量
- Bash Color Escape Codes
- tomcat session 持久化
- eclipse的优化