C语言 链表 这个题目怎么做?

描述编写一个程序,首先根据用户的输入信息创建一条链表LA,每个链表结点的内容为学生的学号(正整数),各结点之间按学号升序排列。然后再根据用户的输入信息创建另一条链表LB,... 描述

编写一个程序,首先根据用户的输入信息创建一条链表LA,每个链表结点的内容为学生的学号(正整数),各结点之间按学号升序排列。然后再根据用户的输入信息创建另一条链表LB,每个链表结点包括学生的学号S和一个运算符O,O的值为“增加”或“删除”。接下来,程序将对LB的每个结点进行分析,如果O的值为“增加”,则在链表LA中新增一个结点,其学号即为S;如果O的值为“删除”,则在链表LA中,找到学号为S的结点并将其删除。在经过上述处理后,要求LA中的结点依然按学号升序排列。

说明:(1)在创建链表时,为了减少内存空间的浪费,必须采用 动态链表 的方法,即每一个链表结点都是根据需要动态创建的;(2)为了增强程序的可读性,应采用多函数的形式来实现,至少应包含如下的函数:创建链表、打印链表等。
输入

第一行是一个整数M,表示链表LA的结点个数,接下来有M行,每一行是一个整数si,表示第i个结点的学号(按照从小到大排序)。接下来的一行是一个整数N,表示链表LB的结点个数,再接下来有N行,每一行是两个整数si和oi,其中,si表示第i个结点的学号(按照从小到大排序),oi表示运算符,oi=1表示“增加”结点,oi =0表示“删除”结点。
输出

输出经过处理以后的链表LA的内容。假设该链表共有K个结点,则输出有K行,每一行是一个整数,即相应的学号。
输入样例

4
1001
1003
1005
1007
2
1002 1
1007 0

输出样例

1001
1002
1003
1005
我写了一小段
struct LA
{
int ID;
struct LA* next;
};
struct LA *CreateA()
{
int num,IDnum,i;
struct LA *head,*p,*q;
scanf("%d",&num);
head = p = q = NULL;
i=0;
while (i<num)
{
scanf("%d",&IDnum);
p = (struct LA *) malloc (sizeof ( struct LA ));
p->ID=IDnum;
if (head==NULL) head = p;
else q->next=p;
q = p;
i++;
}
if(head!=NULL) q->next=NULL;
return (head);
结果调用
int main ()
{
struct LA * head;
head = CreateA; 它说这句有问题
}
展开
 我来答
xoaxa
2017-12-28
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <malloc.h>

struct list {
int ID;
struct list *next;
};
struct list *CreateList() {
int num,i;
struct list *head,*p;
scanf("%d",&num);//num: 链表结点个数
head =  p = (struct list *)malloc(sizeof(struct list));//这是链表的头结点
i = 0;
while (i < num) {
p->next = (struct list *)malloc(sizeof(struct list));
scanf("%d",&p->next->ID);
p = p->next;
i++;
}
p->next = NULL;
return (head);
}

int main () {
struct list * head;
head = CreateList();
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
?>

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式