Zijeak 2018-11-27 11:32 采纳率: 33.3%
浏览 364
已采纳

【数据结构】指针和链表问题,求大佬解答

图片说明

问题
图片说明

 #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,*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)
    {
        //先插表LB 
        //尾插法 (正序) 
        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条回答 默认 最新

  • 大苟姬 2018-11-27 13:25
    关注

    int Deal(LinkList LA,int n)
    输入不要
    吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵