c语言:使用链表

c语言:使用链表

ID:40544595

大小:41.50 KB

页数:4页

时间:2019-08-04

c语言:使用链表_第1页
c语言:使用链表_第2页
c语言:使用链表_第3页
c语言:使用链表_第4页
资源描述:

《c语言:使用链表》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、使用链表(1)在前面的课程中,我们学习过使用变量、数组和结构体(含结构体数组)来存放数据。当我们需要存储一项数据时,我们选择使用变量。需要存储一组类型相同的数据时,我们可以使用数组,而如果要将对多项不同类型的数据“联合”起来进行存取时,我们使用结构体。本章将研究一个新的概念——链表,一种存储线性数据的方法。要理解为何要使用链表,先看下面的程序。为何使用链表例1.一个员工管理系统,要求输入若干名员工的基本信息(姓名、性别、年龄)存储在内存中,每次输入完一名员工信息后,提示用户“是否继续输入?(Y/N)

2、”,当用户输入“y”时,可以继续输入。如用户输入“n”,则在屏幕上输出所有输入的员工信息。分析:首先,我们考虑用户输入的数据如何存储,根据我们学过的知识,我们考虑使用结构体,由于要输入的是若干名员工的信息,因此,我们决定使用结构体数组。难以决定的是数组的大小——即数组元素的数量。在需求中没有明确定义要输入的员工信息的数量,可能是10人,也可能是100人,也可能是1000人。在C99标准之前,C语言中是不支持动态数组的,下面的语句不被支持:inti=0;scanf(“%d”,&i);intk[i];因

3、此,我们可以考虑定义一个很大的数组,例如包含10000个元素的数组,尽管有时我们只输入10个人的信息也是如此,然后用一个变量来记录实际输入的数量。如下面的程序。在这个程序里,使用一个名为stuff_data的数组来存储员工信息,这个数组被定义为包含10000个元素,也就会最多能存储10000条记录,使用变量record_count存储实际的记录数。在实际的应用中,用户有可能只输入10条记录,也可能更多,但最多不允许超过10000条。/*作者:何旭辉hexh@msn.com最后更新:2004年9月9日

4、版本:v.01*/#include/*用于标准输入/输出的头文件*/#include/*包含stdlib.h因为本程序中要使用free,malloc函数*//*以下代码定义一个结构体*/structStuff{charfull_name[20];unsignedage;unsignedgender;};/*************************************/typedefstructStuffstuff;/*使用结构体自定义数据类型*//*

5、以下三个函数用来获取用户输入的整数、字符和字符串,详细说明请参见函数的注释*/intinput_integer(constchar*promptText,unsignedprompt);charinput_char(constchar*promptText,unsignedprompt);intinput_string(constchar*promptText,constunsignedprompt,char*dest);intmain(){constshortintmax_size=10000;s

6、tuffstuff_data[10000];/*定义数组大小*/shortintabsolute_position=0;/*在数组中定位的变量*/shortintrecord_count=0;/*用来存储记录总数的变量*/charchoose;/*这个循环用来询问用户是否输入新记录,当用户选择'y'或者'Y'时输入新记录到数组元素中*/while((choose=input_char("InputNewRecord(Y/N)?",1))=='Y'

7、

8、choose=='y'){if(absolute_

9、position>=max_size){printf("Can'tprocessmorethan10000records.");break;}input_string("FullName:",1,stuff_data[absolute_position].full_name);stuff_data[absolute_position].age=input_integer("Age:",1);stuff_data[absolute_position].gender=input_integer("G

10、ender(1-male2-female)",1);absolute_position++;record_count++;/*记录总数+1*/}/*这个循环用来显示数组中的数据,显示的数量取决于record_count*/for(absolute_position=0;absolute_position<=record_count-1;absolute_position++){printf("Record%d:FullName:%sAge:%dGender:%d"

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。