#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; }
原文:https://www.cnblogs.com/good-hair/p/11905822.html