#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;
}