编写完善程序下列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问的答案也写在答题纸上

代码及运行结果如下:

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;
}

参考下

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632