qq_33624201 2022-04-06 00:24 采纳率: 100%
浏览 80
已结题

编写完善程序下列c语言编写的程序,主要完成如下功能:

能写出注释吗,最好能在VS2019直接运行的
编程完善程序
下列c语言编写的程序,主要完成如下功能:
1)初始化三个带头结点的单链表La,Lb,Lc;
2)连续读入一组整数(比如1 2 3 -1 -2 -3 4 -4 -5 5 0),并将非零整数
依次存储在单链表La中(注意:碰到第一个0结束输入);
3)将La分解成两个带头结点的单链表Lb和Lc,其中Lb中存放负整数,Lc中存放正整数。要求Lb和Lc利用La中的结点空间。
4)在分解后,能显示Lb中所有的负整数,Lc中所有的正整数。
请根据上述已知条件,并结合下面的代码,完成下面三个问题:
1)在void DisplayList(LinkList L)函数体中,写出代码,使之能显示单链表La中的数据元素;
2)void DivideList(LinkList La, LinkList Lb, LinkList Lc)函数体中,写出代码,使之能将La分解成满足上述要求的Lb和Lc。
3)假定在主函数中调用CreateFromTail(La)时,输入的整数系列是:1 2 3 -1 -2 -3 4 -4 -5 5 0,请给出主函数调用DivideList(La, Lb, Lc);后,调用DisplayList(Lb);和DisplayList(Lc);后的屏幕输出结果。

CreateFromTail(La)是头插法代码题目给出来了字太多打不下了

void DisplayList(LinkList L)
{//请写出代码,实现显示单链表L中所有数据元素的功能

}

void DivideList(LinkList La, LinkList Lb, LinkList Lc)
{实现将La分解成两个带头结点的单链表Lb和Lc的功能

}

//第3问的答案也写在答题纸上

  • 写回答

3条回答 默认 最新

  • 关注

    代码及运行结果如下:

    img

    代码:

    
    #include <stdio.h>
    #include <stdlib.h>
    typedef struct _datanode
    {
        int data;
        struct _datanode* next;
    }Node,* LinkList;
    //头插法
    void CreateFromTail(LinkList List)
    {
        int data;
        LinkList t;
        while (1)
        {
            scanf("%d", &data);
            if (data == 0)
                break;
            t = (LinkList)malloc(sizeof(Node));
            t->data = data;
            //头插法
            t->next = List->next;
            List->next = t;
        }
    }
    
    void DisplayList(LinkList L)
    {//请写出代码,实现显示单链表L中所有数据元素的功能
        LinkList p = 0;
        if (L == 0) return;
        p = L->next;
        while (p)
        {
            printf("%d ", p->data);
            p = p->next;
        }
        printf("\n");
    }
    
    void DivideList(LinkList La, LinkList Lb, LinkList Lc)
    {
        //实现将La分解成两个带头结点的单链表Lb和Lc的功能
        LinkList pa, pb, pc;
        pa = La->next;
        pb = Lb;
        pc = Lc;
    
        while (pa)
        {
            if (pa->data < 0)
            {
                pb->next = pa;
                pb = pa;
            }
            else
            {
                pc->next = pa;
                pc = pa;
            }
            pa = pa->next;
        }
        pb->next = 0;
        pc->next = 0;
    
    }
    
    int main()
    {
        LinkList La, Lb, Lc;
        La = (LinkList)malloc(sizeof(Node));
        La->next = 0;
        Lb = (LinkList)malloc(sizeof(Node));
        Lb->next = 0;
        Lc = (LinkList)malloc(sizeof(Node));
        Lc->next = 0;
        CreateFromTail(La);
        DivideList(La, Lb, Lc);
        DisplayList(Lb);
        DisplayList(Lc);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月6日
  • 已采纳回答 4月6日
  • 创建了问题 4月6日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭