实验十一结构体程序设计(二)

一.实验目的

1.掌握链表的基本概念与定义方法;

2.掌握链表、共用体的程序设计。

二.实验环境

1.硬件:PII以上计算机;

2.软件:Windows、Visual C++ 6.0;

3.其它:一张软盘或者U盘等可移动的存储设备。

三.实验内容

练习1.编写一个程序,功能为输入10个整数,将它们存储在一个动态链表中。再读入一个数n,将链表从第n个结点开始重组(即以第n个结点作为头结点,而将前n-1个结点平移至链表的末尾),并输出重组后的链表结果。要求:程序包含3个子函数,各函数要求如下:

l子函数1:功能为创建包括10个结点的链表并读入数据;

形式为:struct LNode *creat(void);

l子函数2:功能为平移(重组)链表;

形式为:struct LNode *move(struct LNode *head,int n);

其中:函数返回值为调整后的新“头指针”的地址;

l子函数3:功能为输出链表中的所有结点;

形式为:void print(struct LNode *head);

运行结果示例:

练习2.编写一个程序,功能为输入并存储一组文具的明细单(以’#’作为结束)。文具的类型以(单个大写)字母标识,并且不同类型的文具其规格也不同。其中:P为铅笔,规格为铅芯直径;G为签字笔,规格为颜色;R为尺子,规格为尺子的长度(cm)。

l要求:程序包含1个子函数,其功能要求为输出指定类型文具的信息;

形式为:voidcount(STA a[],int n,char type);

l提示:程序中数组的类型为STA,应使用typedef定义;n为数组元素的个数;type为要统计的文具类型(单个大写字母)。

运行结果示例:

练习3.编写一个程序,功能为输入10个整数,将它们按奇、偶数分别存储在odd或even两个链表中,(两次)调用print子函数以分别输出两个链表中的数据。

运行结果示例:

*练习4.编写一个程序,功能为输入一组正整数(以-1作为结束标志),将它们存储在一个动态链表中并输出。然后,将链表中所有偶数值结点删除,并输出链表删除后结果。

要求:程序包含3个子函数,各函数要求如下:

l子函数1:功能为创建包括n个结点的链表并读入数据;

形式为:NUM *creat(void);

l子函数2:功能为输出链表中的所有结点;

形式为:void print(NUM *head);

l子函数3:功能为删除链表中的所有偶数值结点;

形式为:NUM *dele(NUM*head);

提示:程序中结点的类型为NUM,应使用typedef定义;

运行结果示例:

⑴正常情况:

⑵特殊情况:

练习1:

#include"stdio.h"

#include"iostream.h"

#include"stdlib.h"

#define LEN sizeof(struct LNode)

#define NULL 0

struct LNode

{int num;

struct LNode *next;

};

int i=1;

struct LNode *creat(void)

{struct LNode *head;

struct LNode *p1,*p2;

p1=p2=(struct LNode*)malloc(LEN);

scanf("%d",p1->num);

head=NULL;

for(i=1;i<=10;i++)

{

if(i==1)head=p1;

else p2->next=p1;

p2=p1;

p1=(struct LNode*)malloc(LEN);

cin>>p1->num;

}

p2->next=NULL;

return(head);

}

struct LNode *move(struct LNode *head,intn)

{struct LNode *p1,*p2;

if(head==NULL){printf("\nlist null!\n");return head;}

p1=head;

while(i

{p2=p1->next;

p1=p2;

i++;

}

p2=p1->next;

head=p2;

p1->next=NULL;

return(head);

}

void print(struct LNode *head)

{struct LNode *p;

printf("\n输出链表结果:\n");

p=head;

if(head!=0)

do

{printf("%d",p->num);

p=p->next;

}

while(p!=NULL);

}

void main()

{

intn;

struct LNode *head;

printf("输入10个整数:");

head=creat();

print(head);

printf("\n输入n值<1-10>:");

scanf("%d",&n);

head=move(head,n);

print(head);

printf("输出链表结果:");

print(head);

}

c语言程序设计 实验十一,C语言实验十一 结构体程序设计(二)相关推荐

  1. C语言学习笔记(15)——结构体程序设计

    前言 C语言的基本数据类型有整数型.实数型及字符型,使用这些基本数据类型可以构造数组类型,并且可以定义相关数据类型的指针.本节介绍的结构体类型区别于以上任何数据类型,它还能把各种不同类型的数据组合成一 ...

  2. 三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰

    三菱R系列PLC程序 全部采用ST语言编写,内部使用函数块和结构体,程序思路清晰,简洁明了. 通过结构体和函数块的使用,可以使您在程序编写水平得到很大提高. ST语言是PLC后续的主流语言,是日后编程 ...

  3. c语言 结构体_C语言 技能提升 系列文章 (三)结构体

    今天,来跟大家聊一聊C语言中的结构体. 在C语言的各种数据类型中,结构体最特别,因为它是可以被程序员定义的,它的特点是非常的灵活. 定义 struct defined_name{ type_name ...

  4. Go语言核心之美 3.4-Struct结构体

    struct(结构体)也是一种聚合的数据类型,struct可以包含多个任意类型的值,这些值被称为struct的字段.用来演示struct的一个经典案例就是雇员信息,每条雇员信息包含:员工编号,姓名,住 ...

  5. 明解C语言入门篇_第12章_结构体

    前言 本文为业余学习<明解C语言入门篇>的记录,包含代码清单和练习题. 开始学习时间:2022年8月21日 +++++++++++++++++++++++++++++++ 第1章 初识C语 ...

  6. C语言——关键字,define定义宏,指针,结构体

    常见关键字 auto break case char continue const default do double else enum extern float for goto if int l ...

  7. C语言结构体工资缴税,C语言进阶-第11~13讲:结构体实践(成绩处理个税计算器之码数分离)...

    任务和代码(一): 成绩处理 /* *All rights reserved *文件名称:main.c *作者: Osseyda *完成日期:2017.11.6 *版本号:v2. * *问题描述:定义 ...

  8. C语言程序设计 细节总结(第9章 结构体共用体枚举)

    第9章 结构体.共用体.枚举 9.1 结构体 1.对于同类型结构体变量之间可以整体一次赋值 9.2 指向结构体的指针 9.2.1结构体变量的指针 1.定义格式:struct 结构体名 *结构体指针变量 ...

  9. 【C 语言】文件操作 ( 读取文件中的结构体数组 | feof 函数使用注意事项 )

    文章目录 一.读取文件中的结构体数组 | feof 函数使用注意事项 二.代码示例 一.读取文件中的结构体数组 | feof 函数使用注意事项 读取文件结构体时 , 可以循环读取文件中的数据 , 只使 ...

最新文章

  1. matlab显示YCrCb的图像,【Matlab系列】读取并显示YUV视频文件
  2. 黑马lavarel教程---10、lavarel模型关联
  3. 程序是什么--过滤器和状态机
  4. SpringBoot实现Redis分布式锁
  5. SpringBoot中自定义拦截器
  6. 额外篇| Python制作词云
  7. android室内定位+3d,基于Android平台的手机室内定位及导航的设计与实现
  8. try catch finally的用法
  9. 第 4 章(表达式和运算符)(4.1~ 4.7)
  10. Graphviz样例之集群流程图
  11. inline在C99以及Gcc中的处理方式[转]---很好的一篇总结
  12. 2021-06-28获取,更新,删除DOM节点
  13. Android入门之login设计
  14. /*CS5460_Note_3*/
  15. 基于JAVA蔚蓝在线学习平台计算机毕业设计源码+数据库+lw文档+系统+部署
  16. 解决插件在IE增强保护模式下无法运行的问题
  17. 中国石油大学 现代远程教育入学指南
  18. Cache、Cookie清除
  19. FreeCAD编译、安装、开发环境
  20. PTA天梯赛L1刷题总结(三)15分题型(超详细题解)

热门文章

  1. python导入模块的方式错误的是,导入模块时的错误处理
  2. java简化代码的jar_JAVA奇技淫巧简化代码之lombok
  3. 用计算机来控制飞船在太空中运行,神舟飞船在太空中靠什么动力运行
  4. 脉脉因“App 整改下架”事件致歉;阿里云全年营收超 600 亿;腾讯防大量群消息骚扰专利获授权|极客头条...
  5. 因财务造假,贾跃亭被罚 2.41 亿元;华为徐直军重申不造成:但将推子品牌汽车;Gradle 7.0 发布|极客头条...
  6. 没有lrzsz,怎么传文件到服务器?
  7. 喜欢 TypeScript 的人,一点都不比 Python 少
  8. 腾讯云联合信通院等发布标准物模型平台,构建物联网行业通用标准
  9. 华为首秀 AI 全栈软件平台!
  10. 天才程序员之陨落:业余项目创业 Cloudflare,公司上市前患病失去自理能力