[Estructura de datos de King's Road de 2023] [Tabla lineal—página 40—05] Implementación completa de C y C++ (se puede ejecutar directamente)

~~~ ¿Cómo puede terminar el estilo de escritura de una manera aburrida, y la historia no reconoce lo ordinario al principio? ✌✌✌

Si necesita el código completo, puede seguir la cuenta pública a continuación y responder "código" en segundo plano para obtenerlo. Aguang espera su visita ~

Pregunta:
inserte la descripción de la imagen aquí
Trate de escribir un algoritmo para invertir la lista de enlaces simples del nodo principal en el lugar. El llamado "en el lugar" significa que la complejidad del espacio auxiliar es O (1).

Ideas para resolver problemas:

>头插法

Código:

#include <iostream>
using namespace std;

typedef struct LNode
{
    int data;
    struct LNode *next;
} LNode, *LinkList;

// 头插法
void HeadInsert(LinkList &L)
{
    int val = 0;
    while (cin >> val)
    {
        LNode *s = new LNode;
        s->data = val;
        s->next = L->next;
        L->next = s;

        if (cin.get() == '\n')
        {
            break;
        }
    }
}

// 尾插法
void TailInsert(LinkList &L)
{
    int val = 0;
    LNode *r = L;
    while (cin >> val)
    {
        LNode *s = new LNode;
        s->data = val;
        r->next = s;
        r = s;
        r->next = NULL;

        if (cin.get() == '\n')
        {
            break;
        }
    }
}

// 遍历输出链表元素
void Print(LinkList L)
{
    LNode *p = L->next;
    while (p)
    {
        cout << p->data << '\t';
        p = p->next;
    }
    cout << endl;
}

void fn(LinkList &L)
{
    LNode *p, *r;
    p = L->next;
    L->next = NULL;
    while (p)
    {
        r = p->next;
        p->next = L->next;
        L->next = p;
        p = r;
    }
}

int main()
{
    LinkList L = new LNode;
    TailInsert(L);

    fn(L);
    Print(L);
}

Supongo que te gusta

Origin blog.csdn.net/m0_47256162/article/details/124461263
Recomendado
Clasificación