actlist函数不清楚哪儿打错了,求解

img


#include
#include
int n;
typedef struct Lnode
{
    int data;
    struct Lnode *next;
    struct Lnode *bef;
}Lnode;
void creatlist(Lnode *&p)
{
    Lnode *pr,*ps;
    pr=p;
    scanf("%d",&n);
    for(int i=0;iscanf("%d",&ps->data);
        pr->next = ps;
        ps->bef = pr;
        pr = ps;
    } 
    pr->next = NULL;
}
void actlist(Lnode *&p)
{
    Lnode *pr,*ps;
    pr = p->next;
//    ps = (Lnode*)malloc(sizeof(Lnode));
    for(int i=0;i1;i++)
    {
        for(int j=0;j1&&pr!=NULL;j++)
        {
            if(pr->data > pr->next->data)
        {
            pr->bef=pr->next;
            pr->next->bef=pr->bef;
            pr->bef->next = pr->next;
            pr->next = pr->next->next;
        }
        }
    }
}
void prilist(Lnode *p)
{
    Lnode *pr;
    pr = p->next;
    for(;pr!=NULL;)
    {
        printf("%d ",pr->data);
        pr = pr->next;
    }
}
int main()
{
    Lnode *p;
    p = (Lnode*)malloc(sizeof(Lnode));
    p->bef = NULL;
    p->next = NULL;
    creatlist(p);
    actlist(p);
    prilist(p);
    return 0;
}

排序问题

#include <stdio.h>
#include <stdlib.h>

typedef struct Lnode {
    int data;
    struct Lnode *next;
    struct Lnode *bef;
} Lnode;

void create_list(Lnode *&head) {
    int n;
    scanf("%d", &n);
    Lnode *p = head;
    for (int i = 0; i < n; i++) {
        Lnode *node = (Lnode*)malloc(sizeof(Lnode));
        scanf("%d", &node->data);
        p->next = node;
        node->bef = p;
        p = node;
    }
    p->next = NULL;
}

void sort_list(Lnode *&head) {
    if (head->next == NULL) return;

    Lnode *p = head->next->next;
    while (p != NULL) {
        Lnode *q = p->bef;
        int key = p->data;

        while (q != head && q->data > key) {
            q->next->data = q->data;
            q = q->bef;
        }

        if (q != head && q->data > key) {
            q->next->data = q->data;
            q->data = key;
        } else {
            q->next->data = key;
        }

        p = p->next;
    }
}

void print_list(Lnode *head) {
    Lnode *p = head->next;
    while (p != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}

int main() {
    Lnode *head = (Lnode*)malloc(sizeof(Lnode));
    head->data = 0;
    head->next = NULL;
    head->bef = NULL;

    create_list(head);
    sort_list(head);
    print_list(head);

    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^