第8章结构体与其他结构类型作业 6-2 逆序建立链表 (10分)

本文介绍了一种通过逆序输入数据来构建链表的方法。利用C语言,我们创建了一个链表,该链表的节点顺序与输入数据的顺序相反。通过使用指针和动态内存分配,我们能够有效地实现这一目标。

本题要求实现,建立一个链表,按输入数据的逆序输出。
函数接口定义:
struct ListNode *create();

函数create利用scanf从输入中获取一系列正整数,当读到-1时表示输入结束。按输入数据的逆序建立一个链表,并返回链表头指针。
链表节点结构定义如下:
struct ListNode {
int data;
struct ListNode *next;
};

裁判测试程序样例:

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

struct ListNode {
int data;
struct ListNode *next;
};

struct ListNode *create();

int main()
{
struct ListNode *p, *head = NULL;
head = create();
p = head;
while(p != NULL )
{
printf("%d “, p->data);
p = p->next;
}
printf(”\n");

return 0;

}

/* 你的代码将被嵌在这里 */

输入样例:
在这里给出一组输入。例如:
1 2 3 4 5 6 7 -1

输出样例:
在这里给出相应的输出。例如:
7 6 5 4 3 2 1

struct ListNode *create()
{
 struct ListNode *top;
 struct ListNode *p;
 struct ListNode *head;
 int s;
 scanf("%d",&s);
 top=NULL;
 while(s!=-1)
 {
  p=(struct ListNode *)malloc(sizeof(struct ListNode));
  p->data=s;
  p->next=top;
  top=p;
  scanf("%d",&s);
 }
 return(top);
}
报告1份,报告内容包括:(1)系统功能框图及说明,(2)开发环境,(3)系统主要功能运行效果截图,(4)源程序,报告整齐美观,数据结构课程实践考核要求 总体要求 利用单向链表数据结构完成对链表的如下操作: 1、创建一条含正整数结点的无序链表 2链表结点的输出 3、链表结点的升序排序 4、链表结点插入 5、链表结点删除 6链表逆序(升序变降序) 7、链表,将链表成由奇数和偶数结点组成的两条链表 8、释放链表 下图中的每一个矩形框称为(环节)、(结点)、(节点)或 结构体变量。为了形成链表,每个结点要增加一个成员,存放下一个结点的存储位置,即指针,指向下一个结点。如上图是一个单向链表。 假设链表结点数据结点类型为: struct node { int data; node *next; }; 1、创建一条无序链表 循环输入数据,若数值不为-1,新建结点并加入链表尾部。head 指向链表首结点,p2 指向建立过程中的链表尾结点,p1 指向新开辟的结点 加入结点时, 三种情况 首结点的建立 中间结点的插入 尾结点的处理 2、输出链表(输出链表上各个结点的值) 依次输出链表中每个结点的值。 3、链表排序 对链表中的整数结点按数值大小进行升序排序。如下图 4、链表结点的插入 把一个结点插入链表,使链表结点数据保持升序 加入结点时, 以下几种情况 原链表为空链表 插入在链表首结点之前 插入在链表中间 插在链表尾结点之后 5、链表结点删除 删除链表上具有指定值的一个结点 删除结点时, 以下几种情况 链表为空链表 //无内容可删 待删除的结点是链表的首结点 //动 head 指针 删除其他结点 //包括中间结点或尾结点 6链表逆序(升序变降序) 对链表中的整数结点按数值变为降序。如下图: 注意:不要进行降序排序,采用结点插入的方法。 7、链表链表成由奇数和偶数结点组成的两条链表,如下图链表的输出结果:奇数和=46,偶数和=140。 8、释放链表 释放链表结点所占用的存储空间。 具体要求 将程序功能做成菜单,形式如下: 1、创建一条含正整数结点的无序链表 2链表结点的输出 3、链表结点的升序排序 4、链表结点插入 5、链表结点删除 6链表逆序(升序变降序) 7、链表,将链表成由奇数和偶数结点组成的两条链表 8、释放链表 0、退出 通过具体选择实现相应功能。 深度思考(智脑R1)
最新发布
11-24
用c++写出利用单向链表数据结构完成对链表的如下选择相应功能操作: 1、创建一条含正整数结点的无序链表 2链表结点的输出 3、链表结点的升序排序 4、链表结点插入 5、链表结点删除 6链表逆序(升序变降序) 7、链表,将链表成由奇数和偶数结点组成的两条链表 8、释放链表 下图中的每一个矩形框称为(环节)、(结点)、(节点)或 结构体变量。为了形成链表,每个结点要增加一个成员,存放下一个结点的存储位置,即指针,指向下一个结点。如上图是一个单向链表。 [图片] 假设链表结点数据结点类型为: struct node { int data; node *next; }; 1、创建一条无序链表 [图片] 循环输入数据,若数值不为-1,新建结点并加入链表尾部。head 指向链表首结点,p2 指向建立过程中的链表尾结点,p1 指向新开辟的结点 加入结点时, 三种情况 l 首结点的建立 l 中间结点的插入 l 尾结点的处理 2、输出链表(输出链表上各个结点的值) [图片] 依次输出链表中每个结点的值。 3、链表排序 对链表中的整数结点按数值大小进行升序排序。如下图 [图片] 4、链表结点的插入 把一个结点插入链表,使链表结点数据保持升序 [图片] 加入结点时, 以下几种情况 l 原链表为空链表 l 插入在链表首结点之前 l 插入在链表中间 l 插在链表尾结点之后 5、链表结点删除 删除链表上具有指定值的一个结点 [图片] 删除结点时, 以下几种情况 l 链表为空链表 //无内容可删 l 待删除的结点是链表的首结点 //动 head 指针 l 删除其他结点 //包括中间结点或尾结点 6链表逆序(升序变降序) 对链表中的整数结点按数值变为降序。如下图: [图片] 注意:不要进行降序排序,采用结点插入的方法。 7、链表链表成由奇数和偶数结点组成的两条链表,如下图链表的输出结果:奇数和=46,偶数和=140。 [图片] 8、释放链表 释放链表结点所占用的存储空间。 [图片] 具体要求 将程序功能做成菜单,形式如下: 1、创建一条含正整数结点的无序链表 2链表结点的输出 3、链表结点的升序排序 4、链表结点插入 5、链表结点删除 6链表逆序(升序变降序) 7、链表,将链表成由奇数和偶数结点组成的两条链表 8、释放链表 0、退出 通过具体选择实现相应功能。
11-24
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值