全部评论 2

  • 下次发可以用代码块,比如这样:

    struct node{
    int x;
    }
    node a=new node;
    a->x=1; 改变x的值;
    struct node{
    char data;数据域;
    nodenxt;指针域;
    }
    node head=new node;
    head->data='A';
    nodek=now node;
    k->data='E';
    head->nxt;
    
    pre 前驱结点;
    nxt 后继结点;
    
    代码:
    #include <bits/stdc++.h>
    using namespace std;
    
    struct node {
    int data;
    node *next, *prev;
    };
    node *head, *tail;
    
    void print_lst() {
    node *step = head;
    while (step) {
    cout << step->data << ' ';
    step = step->next;
    }
    }
    
    void print_lst_re() {
    node *step = tail;
    while (step) {
    cout << step->data << " ";
    step = step->prev;
    }
    }
    
    void append_data(int x) {
    if (tail == NULL) {
    head = tail = new node;
    tail->data = x;
    tail->prev = NULL;
    tail->next = NULL;
    } else {
    node *new_node = new node;
    new_node->data = x;
    new_node->next = tail->next;
    new_node->prev = tail;
    tail->next = new_node;
    tail = new_node;
    }
    }
    
    void insert_node(node *p, int d) {
    node *new_node = new node;
    new_node->data = d;
    new_node->next = p->next;
    p->next = new_node;
    new_node->prev = p;
    if (p == tail) tail = new_node;
    else { new_node->next->prev = new_node; }
    }
    
    void del_data(int d) {
    node *step = head;
    if (step == NULL) return ;
    while (step) {
    if (step->data == d) {
    if (step == head) {
    head = head->next;
    if (head == NULL) {
    tail = NULL;
    } else {
    head->prev = NULL;
    }
    delete step;
    } else if (step == tail) {
    tail = tail->prev;
    if (tail == NULL) {
    head = NULL;
    } else {
    tail->next = NULL;
    }
    delete step;
    } else {
    step->prev->next = step->next;
    step->next->prev = step->prev;
    delete step;
    }
    break;
    }
    step = step->next;
    }
    }
    
    int main () {
    
    head = tail = NULL;
    append_data(1);
    append_data(2);
    append_data(3);
    append_data(4);
    print_lst();
    cout << endl;
    print_lst_re();
    cout << endl;
    
    node *step = head;
    while (step) {
        if (step->data == 3) {
            insert_node(step, 5);
            step = step->next;
        }
        step = step->next;
    }
    print_lst();
    cout << endl;
    print_lst_re();
    cout << endl;
    
    del_data(4);
    print_lst();
    cout << endl;
    print_lst_re();
    cout << endl;
    
    return 0;
    }
    
    
    

    2024-08-20 来自 浙江

    0
  • bbd

    2024-08-20 来自 浙江

    0

热门讨论