c++链表

来源:互联网 发布:数据库编辑器 编辑:程序博客网 时间:2024/06/03 23:01

1.结点类

class Node{public:void printNode();int data;Node* next;};

2.链表类

class TList{public:TList();~TList();void PrintList();bool EmptyList();void InsertNodeHead(int data);    void InsertNodeTail(int data);void DeleteNode(int pos);void SearchNode(int pos);int  GetLenth();void Reverse();private:Node *listNode;int  length;};

具体实现:

TList::TList(){    Node* newNode = new Node();    listNode = newNode;    newNode->data = 0;newNode->next = NULL;    listNode = newNode;length   = 0;}TList::~TList(){delete listNode;    listNode = NULL;}void TList::PrintList(){Node* tempNode = new Node();    tempNode = listNode->next;    int index = 0;while (index<length){cout<<tempNode->data<<" ";tempNode = tempNode->next;index++;}delete tempNode;    tempNode = NULL;cout<<endl;}bool TList::EmptyList(){if (0 == length){return true;}return false;}void TList::InsertNodeHead(int data){    Node *tempNode = new Node();    tempNode = listNode->next;Node *newNode = new Node();    newNode->data = data;    newNode->next = tempNode;listNode->next = newNode;length++;}void TList::InsertNodeTail(int data){    Node *tempNode = new Node();    tempNode = listNode;    while (NULL != tempNode->next)    {        tempNode = tempNode->next;    }    Node *newNode = new Node();    newNode->data = data;    newNode->next = NULL;    tempNode->next = newNode;    length++;}void TList::DeleteNode(int pos){if (pos<0 || pos>length){cout<<"下标错误"<<endl;} else if (length == pos){        //找到最后一个元素        Node *tempNode = new Node();        tempNode = listNode;        while (NULL != tempNode->next)        {            tempNode = tempNode->next;        }        tempNode->next = NULL;length--;}else{Node* tempNode = new Node();tempNode = listNode;int index = 1;while (index < pos){tempNode = tempNode->next;            index++;}tempNode->next = tempNode->next->next;length--;}}int  TList::GetLenth(){return length;}