- #include <iostream>
- using namespace std;
- class Node
- {
- public:
- int data;// 节点数据
- Node *next;
- void printNode()
- {
- cout <<data <<endl;
- }
- };
- class List
- {
- private:
- Node *m_pList;
- int m_iLength;// 链表长度
- public:
- List()// 构造头节点
- {
- m_pList = new Node;
- m_pList->data = 0;
- m_pList->next = NULL;
- m_iLength = 0;
- }
- bool ListEmpty()// 判断链表是否为空
- {
- if(m_iLength == 0)
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- int ListLength()// 返回链表长度
- {
- return m_iLength;
- }
- void ClearList()// 清空链表, 但保留头节点
- {
- Node *currentNode = m_pList->next;
- while(currentNode != NULL)
- {
- Node *temp = currentNode->next;
- delete currentNode;
- currentNode = temp;
- }
- m_pList->next = NULL;
- m_iLength = 0;
- }
- ~List()// 删除链表, 删除头节点
- {
- ClearList();
- delete m_pList;
- m_pList = NULL;
- }
- bool ListInsertHead(Node *pNode)// 在头节点之后插入新节点
- {
- Node *temp = m_pList->next;
- Node *newNode = new Node;
- if(newNode == NULL)
- {
- return false;
- }
- newNode->data = pNode->data;
- m_pList->next = newNode;
- newNode->next = temp;
- m_iLength++;
- return true;
- }
- bool ListInsertTail(Node *pNode)// 在链表尾部插入节点
- {
- Node *currentNode = m_pList;
- while(currentNode->next != NULL)
- {
- currentNode = currentNode->next;
- }
- Node *newNode = new Node;
- if(newNode == NULL)
- {
- return false;
- }
- newNode->data = pNode->data;
- newNode->next = NULL;
- currentNode->next = newNode;
- m_iLength++;
- return true;
- }
- bool ListInsert(int i,Node *pNode)// 在第 i 个位置插入节点
- {
- if(i<0||i>m_iLength)
- {
- return false;
- }
- Node *currentNode = m_pList;
- for(int k = 0;k <i;k++)
- {
- currentNode = currentNode->next;
- }
- Node *newNode = new Node;
- if(newNode == NULL)
- {
- return false;
- }
- newNode->data = pNode->data;
- newNode->next = currentNode->next;
- currentNode->next = newNode;
- return true;
- }
- bool ListDelete(int i,Node*pNode)// 删除第 i 个节点
- {
- if(i<0 || i>= m_iLength)
- {
- return false;
- }
- Node *currentNode = m_pList;
- Node *currentNodeBefore =NULL;
- for(int k = 0;k <= i;k ++)
- {
- currentNodeBefore = currentNode;
- currentNode = currentNode->next;
- }
- currentNodeBefore->next = currentNode->next;
- pNode->data = currentNode->data;
- delete currentNode;
- currentNode = NULL;
- m_iLength--;
- return true;
- }
- };
- int main()
- {
- cout << "Hello world!" << endl;
- return 0;
- }
来源: http://www.bubuko.com/infodetail-3297606.html