计蒜客 数据结构 链表 C++

来源:互联网 发布:2017年人工智能股票 编辑:程序博客网 时间:2024/05/17 21:07
//链表的插入insert()和删除delete_node()还有输出,翻转everse()#include<iostream>using namespace std;class Node {public:    int data;    Node* next;    Node(int _data) {        data = _data;        next = NULL;    }};class LinkList {private:    Node* head;public:    LinkList() {        head = NULL;    }    void insert(Node* node,int index){    // 头指针为空,那么我们就让node成为头指针 if(head == NULL){           head = node;           return;        }     //第二种特殊情况,就是如果插入节点后的位置是链表首位,也就是index等于0的时候。        if(index == 0){            //如果节点插入后是链表首位,那么先让node的指针指向当前表头head,            //完成node的插入,然后让node成为头结点,完成表头的更新,            //然后用return语句结束函数            node->next = head;            head = node;            return;        }        //*写在类名旁边,还是变量名旁边意思是相同的            Node *current_node = head;            int count = 0;        while(current_node->next != NULL && count < index -1){            current_node = current_node->next;            count++;        }        if(count == index - 1){               node->next = current_node->next;               current_node->next = node;        }    }        void output(){        if(head == NULL){            return;        }        Node *current_node = head;        while(current_node != NULL){            //节点数据的表示方式->data            cout<<current_node->data<<" ";            current_node = current_node->next;        }             //输出回车             cout<<endl;    }     void delete_node(int index){        if(head == NULL){            return;        }        Node* current_node = head;        int count = 0;        if(index == 0){            head = head->next;            delete current_node;            return;        }        while(current_node->next != NULL && count < index-1){            current_node = current_node->next;            count = count + 1;        }         //找到指定的节点,还有检测是不是删除最后一个节点        if( count == index - 1 && current_node->next != NULL){            Node* delete_node = current_node->next;            current_node->next = delete_node->next;            delete delete_node;        }    }     void reverse(){        if(head == NULL){            return;        }        Node *next_node, *current_node;        current_node = head->next;        head->next = NULL;        while(current_node != NULL){            next_node = current_node->next;            current_node->next =head;            head = current_node;            current_node = next_node;        }    }};int main() {    LinkList linklist;    for(int i = 1 ; i <= 10 ; i++){        Node *node = new Node(i);        linklist.insert(node,i-1);    }    linklist.output();    linklist.delete_node(5);    linklist.output();    linklist.reverse();    linklist.output();    return 0;}

0 0
原创粉丝点击