questionmany 2023-05-31 17:50 采纳率: 100%
浏览 48
已结题

关于#c语言#的问题:读取访问权限冲突

img

#include<stdio.h>
#include<stdlib.h>
typedef enum status
{
    success, error, fail
}status;
typedef int ElemType;
typedef struct Node
{
    ElemType elem;
    struct Node* next;
} Node, * ptr;
typedef ptr* SqList;
status List_init(SqList L);
status create_list(SqList L, int n);
status find_list(SqList L, int n);
void printf_list(SqList L);

status List_init(SqList L)
{
    status s = error;
    ptr p;
    if (*L == NULL)
    {
        p = (ptr)malloc(sizeof(Node));
        if (p == NULL)return s;
        else
        {
            *L = p;
            (*L)->next = NULL;
            s = success;
        }
    }
    return s;
}
status create_list(SqList L, int n)
{
    status s = fail;
    s = List_init(L);
    int i = 1;
    ptr r = *L;
    while ((*L) && i <= n)
    {
        ptr p = (ptr)malloc(sizeof(Node));
        if (p != NULL)
        {
            r ->next= p;
            p->next = NULL;
            r = r->next;
        }
    }
    return s;
}
status find_list(SqList L,int n)
{
    status s = error;
    create_list(L, n);
    ptr r = *L;
    printf("Enter ElemType:\n");
    while (r->next)
    {
        ElemType data;
        scanf_s("%d", &data);
        r->elem = data;
        r = r->next;
        s = success;
    }
    printf("Input completely!\n");
    return s;
}
void printf_list(SqList L)
{
    ptr p;
    p = *L;
    while (p->next)
    {
        printf("%d\t", p->elem);
        p = p->next;
    }
    printf("\n");
}

int main()
{
    int n, m;
    SqList LA, LB;
    LA = (SqList)malloc(sizeof(ptr*));
    LB = (SqList)malloc(sizeof(ptr*));
    printf("Enter n,m:\n");
    scanf_s("%d %d", &n, &m);
    create_list(LA, n);
    create_list(LB, m);
    find_list(LA, n);
    find_list(LB, n);
    printf_list(LA);
    printf_list(LB);

    return 0;
}

求解答。

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2023-05-31 20:43
    关注

    这么改,find_list()函数输入链表数据,供参考:

    #include<stdio.h>
    #include<stdlib.h>
    typedef enum status
    {
        success, error, fail
    }status;
    typedef int ElemType;
    typedef struct Node
    {
        ElemType elem;
        struct Node* next;
    } Node, * ptr;
    typedef ptr* SqList;
    status List_init(SqList L);
    status create_list(SqList L, int n);
    status find_list(ptr L); //status find_list(SqList L, int n);
    void printf_list(ptr L); //void printf_list(SqList L);
    
    status List_init(SqList L)
    {
        status s = error;
        ptr p;
        if ((*L) == NULL)
        {
            p = (ptr)malloc(sizeof(Node));
            if (p == NULL)return s;
            else
            {
                (*L) = p;
                (*L)->next = NULL;
                s = success;
            }
        }
        return s;
    }
    status create_list(SqList L, int n)
    {
        status s = fail;
        s = List_init(L);
        int i = 1;
        ptr r = (*L);
        while ((*L) && i <= n)
        {
            ptr p = (ptr)malloc(sizeof(Node));
            if (p != NULL)
            {
                r ->next= p;
                p->next = NULL;
                r = r->next;
            }
            i++;    //修改
        }
        return s;
    }
    status find_list(ptr L) //(SqList L,int n) 修改
    {
        status s = error;
                           //create_list(L, n);修改
        ptr r = L;         //ptr r = *L;       修改
        printf("Enter ElemType:\n");
        while (r->next)
        {
            ElemType data;
            scanf_s("%d", &data);
            r->next->elem = data; //r->elem = data;
            r = r->next;
            s = success;
        }
        printf("Input completely!\n");
        return s;
    }
    void printf_list(ptr L) //(SqList L)  修改
    {
        ptr p;
        p = L; //p = *L;  修改
        while (p->next)
        {
            printf("%d\t", p->next->elem); //printf("%d\t", p->elem); 修改
            p = p->next;
        }
        printf("\n");
    }
    
    int main()
    {
        int n, m;
        ptr LA = NULL, LB = NULL;
        //SqList LA, LB;                      修改
        //LA = (SqList)malloc(sizeof(ptr*));  修改
        //LB = (SqList)malloc(sizeof(ptr*));  修改
        printf("Enter n,m:\n");
        scanf_s("%d %d", &n, &m);
        create_list(&LA, n); //create_list(LA, n);修改
        create_list(&LB, m); //create_list(LB, m);修改
        find_list(LA);       //find_list(LA, n);      修改
        find_list(LB);       //find_list(LB, n);      修改
        printf_list(LA);
        printf_list(LB);
    
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 6月9日
  • 已采纳回答 6月1日
  • 创建了问题 5月31日