以下是一个可能的实现:

#include using namespace std;

template class Node{ public: T data; Node* next;

Node(T value){
    data = value;
    next = nullptr;
}

};

template class LinkedList{ private: Node* head; int size;

public: LinkedList(){ head = nullptr; size = 0; }

void insertNode(T value){
    Node<T>* newNode = new Node<T>(value);
    if(head == nullptr){
        head = newNode;
    }
    else{
        Node<T>* current = head;
        while(current->next != nullptr){
            current = current->next;
        }
        current->next = newNode;
    }
    size++;
}

void deleteNode(T value){
    if(head == nullptr){
        cout<<"链表为空,无法删除节点!"<<endl;
        return;
    }
    if(head->data == value){
        Node<T>* temp = head;
        head = head->next;
        delete temp;
        size--;
        return;
    }
    Node<T>* current = head;
    while(current->next != nullptr && current->next->data != value){
        current = current->next;
    }
    if(current->next == nullptr){
        cout<<"未找到该节点!"<<endl;
        return;
    }
    Node<T>* temp = current->next;
    current->next = current->next->next;
    delete temp;
    size--;
}

void traverse(){
    if(head == nullptr){
        cout<<"链表为空!"<<endl;
        return;
    }
    Node<T>* current = head;
    while(current != nullptr){
        cout<<current->data<<" ";
        current = current->next;
    }
    cout<<endl;
}

void searchNode(T value){
    if(head == nullptr){
        cout<<"链表为空!"<<endl;
        return;
    }
    Node<T>* current = head;
    int index = 0;
    while(current != nullptr){
        if(current->data == value){
            cout<<"找到该节点,位置为:"<<index<<endl;
            return;
        }
        current = current->next;
        index++;
    }
    cout<<"未找到该节点!"<<endl;
}

};

int main(){ LinkedList list; int choice; int value;

do{
    cout<<"功能菜单:"<<endl;
    cout<<"(1)创建链表。"<<endl;
    cout<<"(2)插入结点。"<<endl;
    cout<<"(3)删除节点。"<<endl;
    cout<<"(4)链表遍历输出。"<<endl;
    cout<<"(5)查询结点。"<<endl;
    cout<<"(0)退出程序。"<<endl;
    cout<<"请选择功能(0-5):";
    cin>>choice;

    switch(choice){
        case 1:
            int n;
            cout<<"请输入链表的长度:";
            cin>>n;
            for(int i=0; i<n; i++){
                cout<<"请输入第"<<i+1<<"个元素的值:";
                cin>>value;
                list.insertNode(value);
            }
            break;
        case 2:
            cout<<"请输入要插入的元素的值:";
            cin>>value;
            list.insertNode(value);
            break;
        case 3:
            cout<<"请输入要删除的元素的值:";
            cin>>value;
            list.deleteNode(value);
            break;
        case 4:
            list.traverse();
            break;
        case 5:
            cout<<"请输入要查询的元素的值:";
            cin>>value;
            list.searchNode(value);
            break;
        case 0:
            cout<<"程序已退出!"<<endl;
            break;
        default:
            cout<<"请输入合法的选项!"<<endl;
            break;
    }
}while(choice != 0);

return 0;
c++书写程序1要求编程实现整数链表类用类模板实现通用的链表类实现以下功能。创建n个元素的整数链表功能菜单: 1创建链表。2插入结点 3删除节点4链表遍历输出5查询结点

原文地址: https://www.cveoy.top/t/topic/iKX2 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录