- 22
- 0
- 约5.19千字
- 约 9页
- 2017-12-14 发布于河南
- 举报
能扩容的顺序表作为线性表的存储结构
#include stdio.h#include stdlib.h#include string.h#define MAX 4// 动态数组的初始长度#define LISTINCREMENT 3// 动态数组长度不够时,每次增加的长度// 学生结构体typedefstruct{char no[10];char name[20];char gender;float score;} STU;// 动态顺序表结构体typedefstruct{STU *s;// 存放学生的动态数组的起始地址,数组大小可以扩充,因此称其为“动态”intlistSize;// 当前顺序表中数组单元的个数int length;// 当前表中元素的个数(肯定小于数组单元的个数)} SeqList;// 功能菜单void menu(){printf(\n\t***动态顺序表(顺序表空间可以扩充)***\n);printf(\t* 1 插入一个学生 *\n);printf(\t* 2 删除一个学生 *\n);printf(\t* 3 修改学生信息 *\n);printf(\t* 4 输出所有学生信息 *\n);printf(\t* 0 保存数据并退出程序 *\n);printf(\t************************************\n);}/* 检测当前目录下是否存在文件stu.dat,如果存在,则从其中读取数据构造线性表;否则,新建该数据文件。*/void init(SeqList SL)// 将顺序表定义为主函数中的局部变量list,此处通过参数SL对其进行引用{FILE *fp;char flag=r;STU stmp;inti;/* 给动态数组开辟初始的内存空间,并初始化为空表;*/SL.s = (STU *)malloc(sizeof(STU)*MAX); // 基本等价于 SL.s = (STU *)calloc(MAX, sizeof(STU));// 设置顺序表中动态数组的初始长度为MAXSL.listSize = MAX;// 设置顺序表的初始长度为0SL.length=0;// 打开文件if((fp=fopen(stu.dat, rb))==NULL){flag=w;if((fp=fopen(stu.dat, wb))==NULL){printf(数据文件创建不成功,程序异常退出!);exit(-1);}}// 开始读文件if(flag==r){i=0;fread(stmp, sizeof(STU), 1, fp);// 先尝试着读第一个学生while(!feof(fp))// 检测文件尚未结束,则说明读到了一个学生{if(iSL.listSize){SL.s[i] = stmp;// 将读到的学生stmp复制到顺序表中s数组的i号单元fread(stmp, sizeof(STU), 1, fp);// 从文件读下一个学生的同时,执行i++i++;}else{// 必须先扩充顺序表中动态数组s的空间,然后再继续;// 给顺序表中的动态数组增加LISTINCREMENT个单元的空间SL.s = (STU *)realloc(SL.s, (SL.listSize+LISTINCREMENT)*sizeof(STU));SL.listSize = SL.listSize+LISTINCREMENT;}}SL.length = i;// 读到的学生个数即为顺序表长度}// 关闭文件fclose(fp);}/* 插入一个学生到线性表中 */void insert(SeqList SL){inti,location,len;SeqListsl;voidshowAll(SeqList SL);void save(SeqList SL);showAll(SL);len=SL.length;printf(\n当前顺序表中已有%d个元素,当前插入位置只能是[1,%d]\n,len,len);printf(\n请输入插入位置:);scanf(%d,location);while(location=0||location=len){printf(\n插入位置错误,请再次输入插入位置:);scanf(%d,location);}while(SL.length=SL.listSize){sl.s=(STU*)malloc((SL.listSize+LISTINCREMENT)*sizeof(STU));sl.listSize=SL.listSize+LISTINCREMENT;sl
您可能关注的文档
- HONEYWELL(霍尼韦尔) PKS DCS简介.doc
- TED演讲语段精华整理.doc
- GBA高级战争2WAR ROOM模式研究.doc
- 经济法 国外.docx
- 五年级英语螺岭小学期中复习资料.doc
- 新一上半册单词 词性划分.doc
- 供应商质量等级管理操作指导书2.doc
- 品质保证类-专用词对照表.doc
- NOKIA BSC命令集锦.doc
- 灯光师在电影制作扮演的角色.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 2025年演出经纪人话剧_舞台剧项目收益分配模式专题试卷及解析.pdf VIP
- 2025年演出经纪人演出保险方案的招标与采购流程专题试卷及解析.pdf VIP
- 2025年人力资源管理师残疾人职工就业保障与权益保护专题试卷及解析.pdf VIP
- 2025年信息系统安全专家数据安全生命周期管理专题试卷及解析.pdf VIP
- 2025年碳排放管理师碳边境调节机制零碳工厂建设专题试卷及解析.pdf VIP
- 医疗护理安全警示教育案例.pptx VIP
- 优质护理服务PPT课件.pptx VIP
- 2025年房地产经纪人二手房交易行为规范专题试卷及解析.pdf VIP
- 2025年互联网营销师敏捷项目管理在营销中的应用专题试卷及解析.docx VIP
- 2025年项目管理专业成本补偿合同最新政策解读专题试卷及解析.pdf VIP
原创力文档

文档评论(0)