Zijeak 2018-11-25 05:13 采纳率: 33.3%
浏览 646
已采纳

【数据结构】求助:一个简单的单链表问题

图片说明

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

#define MAXSIZE 20

typedef int ElemType; 
typedef struct
{
    ElemType data;
    struct Node* next;
}Node,*LinkList;

int main()
{
    //建立单链表
    LinkList LA;
    *LA=(LinkList)malloc(sizeof(Node));
    *LA->next=NULL;
    Node *r,*s;
    int c;
    r=LA;
    int flag=1,count=0; 
    while(flag)
    {
        printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n");
        scanf("%d",&c);
        if(c!="q")
        {
            s=(Node*)malloc(sizeof(Node));
            s->data=c;
            r->next=s;
            r=s;
            count++;
        }
        else
        {
            flag=0;
            r->next=NULL;
        }
    } 
    Deal(LA,count);

    //打印新生成的表
    printf("New LinkList is:\n");
    r=LA->next;
    while(r->next!=NULL)
    {
        printf("%5d",r->data);
    } 
    return 0;
}

int Deal(LinkList *LA,int n)//n为单链表长度,n为偶数 
{
    LinkList LB,LC;
    *LB=(LinkList)malloc(sizeof(Node));//建立头结点
    *LB->next=NULL;//建立空的单链表LB
    *LC=(LinkList)malloc(sizeof(Node));//建立头结点
    *LC->next=NULL;//建立空的单链表LC
    Node *p,*q,*r;
    int i;
    p=LA->next->next;//令指针p指向序号为偶数的元素 
    q=LA->next;//令指针q指向序号为奇数的元素 
    r=LB;//令指针r指向LB 
    s=LC;//令指针s指向LC 


    //插入LB的第一个元素 
    LB->next=p;
    q-next=p-next;
    p=p->next->next;
    while(p->next!=NULL&&q->next!=NULL)
    {
        //尾插法 
        s->next=q;
        LA=q->next;
        q=q->next->next;
        s=s->next; 

        //头插法 
        p->next=LB->next;
        LB->next=p; 
        p=p->next->next;
    }

    //合并LB/LC两表
    if(p->next==NULL)
    {
        p->next=LC->next;
        free(LC);
    }
    return 0;


}

程序无法通过编译,麻烦各位大神帮忙看一看那里出问题了

  • 写回答

2条回答 默认 最新

  • threenewbee 2018-11-25 07:28
    关注

    不考虑运行,仅仅修改编译错误,如下:

    如果运行还有问题,请点我回答左上角的采纳和向上的箭头,重新提问,我继续回答。

    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAXSIZE 20
    
    typedef int ElemType; 
    
    typedef struct Node
    {
        ElemType data;
        Node* next;
    }*LinkList;
    
    int Deal(LinkList *LA,int n);
    
    int main()
    {
        //建立单链表
        LinkList * LA = NULL;
        *LA=(LinkList)malloc(sizeof(Node));
        (*LA)->next=NULL;
        Node *r,*s;
        int c;
        r=*LA;
        int flag=1,count=0; 
        while(flag)
        {
            printf("Please input new node to the LinkList,node must be intatger,input q to quit:\n");
            scanf("%d",&c);
            if(c!='q')
            {
                s=(Node*)malloc(sizeof(Node));
                s->data=c;
                r->next=s;
                r=s;
                count++;
            }
            else
            {
                flag=0;
                r->next=NULL;
            }
        } 
        Deal(LA,count);
    
        //打印新生成的表
        printf("New LinkList is:\n");
        r=(*LA)->next;
        while(r->next!=NULL)
        {
            printf("%5d",r->data);
        } 
        return 0;
    }
    
    int Deal(LinkList *LA,int n)//n为单链表长度,n为偶数 
    {
        LinkList *LB,*LC;
        *LB=(LinkList)malloc(sizeof(Node));//建立头结点
        (*LB)->next=NULL;//建立空的单链表LB
        *LC=(LinkList)malloc(sizeof(Node));//建立头结点
        (*LC)->next=NULL;//建立空的单链表LC
        Node *p,*q,*r,*s;
        int i;
        p=(*LA)->next->next;//令指针p指向序号为偶数的元素 
        q=(*LA)->next;//令指针q指向序号为奇数的元素 
        r=*LB;//令指针r指向LB 
        s=*LC;//令指针s指向LC 
    
    
        //插入LB的第一个元素 
        (*LB)->next=p;
        q->next=p->next;
        p=p->next->next;
        while(p->next!=NULL&&q->next!=NULL)
        {
            //尾插法 
            s->next=q;
            *LA=q->next;
            q=q->next->next;
            s=s->next; 
    
            //头插法 
            p->next=(*LB)->next;
            (*LB)->next=p; 
            p=p->next->next;
        }
    
        //合并LB/LC两表
        if(p->next==NULL)
        {
            p->next=(*LC)->next;
            free(LC);
        }
        return 0;
    
    
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 运筹学中在线排序的时间在线排序的在线LPT算法
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧