结构体程序设计(二)

原创 2012年03月22日 13:20:45

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

一.实验目的

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<n-1)

{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);

}

 

基于MCP2515的Linux CAN总线驱动程序设计(二)

转自http://blog.csdn.net/leesheen/article/details/8770560 1. 前言         CAN(Controller Area ...
  • qwaszx523
  • qwaszx523
  • 2017年02月17日 14:25
  • 553

2016年团体程序设计天梯赛-初赛 - 到底有多二 - Java

一个整数“犯二的程度”定义为该数字中包含2的个数与其位数的比值。如果这个数是负数,则程度增加0.5倍;如果还是个偶数,则再增加1倍。例如数字“-13142223336”是个11位数,其中有3个2,并且...
  • qq_34594236
  • qq_34594236
  • 2016年06月05日 09:18
  • 968

《最优化方法及其Matlab程序设计》马昌凤 部分习题答案

第12章 序列二次规划法 6.用SQP方法的Matlab程序求解下列优化问题: (1) %%% 目标函数 f(x) %%%%%%%%%%% function f=f1(x) % f=-pi*x(...
  • lyc_daniel
  • lyc_daniel
  • 2015年09月28日 11:19
  • 4039

基于MCP2515的Linux CAN总线驱动程序设计(三)

1. 前言         上篇文章介绍了使用SPI子系统设计的基于MCP2515的Linux CAN总线驱动程序,这篇文章主要介绍MCP2515的字符设备驱动功能函数的实现。 2. 硬件设计 ...
  • yuzhenchao1980
  • yuzhenchao1980
  • 2017年03月07日 21:40
  • 267

Python篇----面向对象程序设计(一)(类和对象篇)

1 概述     简称:OOP(Oriented Object Programming)。这是一种以构建对象,编程实现为方向的语言。现实世界中,许多问题过于复杂,需要拆分,所以用不同的对象代替各个不同...
  • guzhenping
  • guzhenping
  • 2015年11月24日 23:41
  • 1978

Windows 程序设计 复习笔记(共 81 问)

(个人整理,仅做复习用 :D)
  • hcbbt
  • hcbbt
  • 2015年01月14日 10:45
  • 3210

对程序设计的一些感悟

从2002年接触C语言开始,不知不觉程序设计已经伴随我14年了,这期间或多或少的使用了C,C++,C#,Java,PHP,JavaScript, bash, VBA这些常见的开发语言,可悲的是才疏学浅...
  • smstong
  • smstong
  • 2016年03月22日 11:15
  • 1467

程序设计风格

程序设计风格 1.最终目的是设计一个好的软件; 好软件的标准: 一,正确性-能完成需求中的所有要求; 二,可扩展性-易于修改; 三,高效的数据结构与算法; 四,易读性; 五,可移植性等;...
  • a379039233
  • a379039233
  • 2014年01月12日 12:51
  • 892

MySQL数据库程序设计--学习笔记

第一章  数据库技术的基本概念与方法 第二章  MySQL概述 第三章  数据库和表 第四章  表数据的基本操作 第五章  数据库的查询 第六章  索引 第七章  视图 第八章  数据完整性约束与表维...
  • ouyangenping
  • ouyangenping
  • 2013年09月05日 08:28
  • 1220

java学习笔记图形程序设计及GUI应用小结(1)

------- android培训、java培训、期待与您交流! -------- Swing介绍 Swing是不对等基于GUI工具箱的正式名字。它已是Java基础类库(Java Founda...
  • u013111003
  • u013111003
  • 2015年09月19日 16:16
  • 666
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:结构体程序设计(二)
举报原因:
原因补充:

(最多只允许输入30个字)