c_cpp C ++中的链表实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++中的链表实现相关的知识,希望对你有一定的参考价值。

// Linked List CPP
#include<iostream>

using namespace std;

class Node
{
public:
    int data;
    Node *next;
};

class List
{
    Node *head;
    Node *tail;
    Node *temp;
    bool isEmpty()
    {
        return head == NULL;
    }
public:
    List()
    {
        head = NULL;
        tail = NULL;
    }

    void insert(int x)
    {
        temp = new Node;
        temp->data = x;
        if(isEmpty())
        {
            temp->next = NULL;
            tail = temp;
        }
        else
            temp->next = head;
        head = temp;
    }

    void insertAtEnd(int x)
    {
        temp = new Node;
        temp->data = x;
        temp->next = NULL;
        if(isEmpty())
        {
            head = temp;
            tail = temp;
        }
        else
        {
            tail->next = temp;
            tail = temp;
        }
    }

    void remove(int x)
    {
        temp = head;
        Node *prev;
        while(temp->next != NULL && temp->data != x)
        {
            prev = temp;
            temp = temp->next;
        }
        if(temp->data == x)
        {
            prev->next = temp->next;
            delete temp;
        }
        else if(temp->next == NULL)
        {
            cout << "Error: Number Not found..." << endl;
        }
    }

    void find(int x)
    {
        int i;
        for(i=1, temp = head;temp->next != NULL && temp->data != x;temp = temp->next, i++);
        if(temp->data == x)
        {
            cout << "Found at position:" << i << endl;
        }
        else if(temp->next == NULL)
        {
            cout << "Error: Number Not found..." << endl;
        }
    }

    void display()
    {
        if(!isEmpty())
        {
            for(temp = head; temp != NULL; temp=temp->next)
                cout << temp->data << " ";
            cout << endl;
        }
        else
        {
            cout << "List is Empty!" << endl;
        }
    }
};

int main()
{
    List l;
    l.display();
    l.insert(15);
    l.display();
    l.insert(25);
    l.display();
    l.insert(35);
    l.display();
    l.insert(45);
    l.display();
    l.find(15);
    l.remove(25);
    l.display();
    l.insertAtEnd(55);
    l.insertAtEnd(65);
    l.display();
}

以上是关于c_cpp C ++中的链表实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构--单链表的实现(c语言实现)

数据结构--单链表的实现(c语言实现)

在VS2019中编写C语言的链表程序出现了C4473等错误,怎么修改?

C语言单链表增删改查的实现

C语言单链表增删改查的实现

Redis 中的链表结构