《数据结构(C语言版)》实验指导_第1页
《数据结构(C语言版)》实验指导_第2页
《数据结构(C语言版)》实验指导_第3页
《数据结构(C语言版)》实验指导_第4页
已阅读5页,还剩90页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《数据结构(C语言版)》

实验指导目录TOC\o"1-5"\h\z\o"CurrentDocument"第1章绪论 1实验1-1起泡排序 1\o"CurrentDocument"实验1-2三元组 4\o"CurrentDocument"实验1-3复数 7\o"CurrentDocument"实验!-4时间复杂度 11\o"CurrentDocument"第2章线性表 13\o"CurrentDocument"实验2-1顺序表 13\o"CurrentDocument"实验2-2单链表 30\o"CurrentDocument"实验2-3静态链表 46\o"CurrentDocument"实验2-4有序链表 46\o"CurrentDocument"第3章栈和队列 47\o"CurrentDocument"实验3-1链栈 47\o"CurrentDocument"实验3-2顺序栈 51\o"CurrentDocument"实验3-3链队列 60\o"CurrentDocument"实验3-4循环队列 60\o"CurrentDocument"第6章树和ニ叉树 69\o"CurrentDocument"实验6-1二叉树的顺序存储 69\o"CurrentDocument"实验6-2ニ叉链表 69\o"CurrentDocument"实验6-3遍历ニ叉树及其应用 69\o"CurrentDocument"实验6-4线索ニ叉树及其应用 75\o"CurrentDocument"实验6-5树和森林及其应用 75\o"CurrentDocument"实验6-6赫夫曼树及其应用 75第7章图 80\o"CurrentDocument"实验7-1图的遍历 80\o"CurrentDocument"实验7-2最短路径 85\o"CurrentDocument"实验7-3关键路径 89\o"CurrentDocument"第9章査找 90\o"CurrentDocument"实验9-1顺序查找和折半查找 90\o"CurrentDocument"实验9-2ニ叉排序树 95\o"CurrentDocument"实验9-3哈希表 95\o"CurrentDocument"第10章内部排序 96\o"CurrentDocument"实验!0-1插入排序 96\o"CurrentDocument"实验10-2快速排序 96\o"CurrentDocument"实验10-3选择排序 101\o"CurrentDocument"实验10-4堆排序 101\o"CurrentDocument"实验!0-5归并排序 102第1章绪论实验起泡排序[题目]把起泡排序的算法(课本P16)改写成C语言程序,并编写程序进行调试。[目的]把类C语言书写的算法改写成C语言程序,并进行调试。[步骤].起泡排序算法(类C语言)(略)参考课本P16。.改写成C语言程序(略)。.测试程序1)准备测试数据,存放在数组中;2)打印排序前的数据3)进行起泡排序4)打印排序后的数据.测试数据和结果包括:准备好的测试数据,期望结果,实际运行结果(运行程序后填写,并与期望结果对照)。.总结考虑:1)怎样将类C语言算法改写成C语言程序?如:怎样处理局部变量,怎样处理符号常量等。2)怎样书写程序才能提高代码的可读性?如:文件的格式,函数声明的位置,主函数的位置,函数具体实现的位置,采用缩进格式等。3)还遇到那些问题?如:应当熟悉开发环境,应当熟练使用各种调试エ具等。[源程序]@Title:数据结构实验©Name:く实验!-1>起泡排序©Object:[实验目的]把起泡排序的算法改写成C语言程序,并编写程序进行调试。掌握如何把类C语言书写的算法改写成C语言程序。[实验提示]1)怎样将类c语言算法改写成C语言程序?如:怎样处理局部变量,怎样处理符号常量等。2)怎样书写程序才能提高代码的可读性?如:文件的格式,函数声明的位置,主函数的位置,函数具体实现的位置,采用缩进格式等。©Usage:请查看"TO-DO列表’根据要求完成代码©Copyright:BTC2004©Author:ZhuangBo©Date:2004©Description://///////////////////////////////////////////////////////////包含头文件#include<stdio.h>////////////////////////////////////////////////////////////Z对主函数中调用的函数进行声明/Z对数组a[0..n-1]进行起泡排序,使数据从小到大有序// //TODO(#1#):这里插入函数bubble_sort()的声明// 〃顺序打印数组a中的元素voidprintout(inta[],intn);////////////////////////////////////////////////////////////Z起泡排序主程序intmain()(〃测试数据inta[]={82,47,29,74,91,53,82,62,98,51);printf("起泡排序、n");/Z打印排序前的数据printf("排序前:'n");printout(a,10);/Z进行起泡排序// //T0D0(#1#):这里调用bubble_sort()对数组a排序// /Z打印排序后的数据printf("排序后:'n");print_out(a,10);////////////////////////////////////////////////////////////Z函数的实现定义在下面ftdefineTRUE 1#defineFALSE 0/Z对数组a[〇..n-1]进行起泡排序,使数据从小到大有序voidbubblesort(inta[],intn)(// //TODO(#1#):这里定义函数中用到的变量// for(i=n-l,change=TRUE;i>=l&&change;-i){change=FALSE;for(j=0;j<i;++j)if(a[j]>a[j+l]){// //TODO(#1#):这里交换a[j]和a[j+l]// change=TRUE;}//bubble_sort〃顺序打印数组a中的元素voidprint_out(inta[],intn)for(i二〇;i<n;i++)printf(z,%dz/,a[i]);printf("\n'z);实验1-2三元组[题目]用C语言实现三元组ADT,并编写测试程序。[目的]把三元组ADT(课本P9,11-13)用C语言实现;学习使用模块结构;学习编写调试程序。[步骤].三元组类型的ADT定义。(略)。.三元组类型的实现。1)类型描述(略)。2)基本操作的声明(略)。3)基本操作的实现(略)。3,模块设计主程序:测试三元组模块的程序。三元组模块:实现三元组类型的程序。类C通用模块:包含类C中的预定义常量和类型。模块的组织:主程序CXX0102.CPP#include<stdio.h>#include"triplet.h"voidShowMainMenu();intGetChoice();voidmain()voidShowMainMenu()(intGetChoice()三元组模块TRIPLET.H//防止重复包含#ifndef_TRIPLET_H_#define_TRIPLET_H_#include"ds.h"typedefintElemSet;/Z用户自定义类型//三元组类型描述typedefElemSetTriplet[3];//基本操作的实现StatusInitTriplet(TripletsT,ElemSetvl,ElemSetv2,ElemSetv3);StatusInitTriplet(TripletsT,ElemSetvl,ElemSetv2,ElemSetv3)#endif//_TRIPLET_H_类c通用模块#ifndef_DS_H_#define_DS_H_//函数结果状态代码TOC\o"1-5"\h\zconstint TRUE = 1;constint FALSE = 0;constintOK =1;constint ERROR = 0;constintINFEASIBLE =-1;constintOVERFLOW =-2;//Status是函数的类型,其值是函数结果状态代码typedefintStatus;#endif//_DS_H4.测试程序的设计测试程序采用菜单命令的方式根据用户输入的命令反复测试。程序开始显示菜单提示,根据用户输入进行相应的测试,然后再显示菜单,直到用户选择退出测试程序。while(TRUE){ShowMainMenu();cmd=GetChoice();switch(cmd){/Z创建三元组break;//...case0:/Z退出return;default:/Z错误命令)}显示菜单的程序:/Z显示主菜单voidShowMainMenu()(staticchar*menu[]={”三元组类型测试程序”,"1创建三元组”,«2 ”,"0退出程序”);inti;for(i=0;i<sizeof(menu)/sizeof(char*);i++)printf("%s\nn,menu[i]);)选择菜单的程序:/Z得到用户选择的菜单项intGetChoice()(inti;printf(w请输入您的选择:;scanf(M%dw,&i);returni;}.录入源程序参见所附源程序。.测试数据和结果包括:准备好的测试数据,期望结果,实际运行结果(运行程序后填写,并与期望结果对照)。フ总结考虑:1)怎样将类C语言算法改写成C语言程序?2)怎样书写程序才能提高代码的可读性?如:模块划分,函数声明的位置,主函数的位置,函数具体实现的位置,采用缩进格式等。3)编写头文件的技巧。如何防止重复包含。4)还遇到那些问题?[源程序]文件:DS.H类C中通用的常量和类型(略)。文件:TRIPLET.H 三元组的定义和实现(略)。文件:CXX0102.CPP 测试程序(C代表班级,XX代表学号,0102代表实

验!-2)(略)。实验1-3复数[题目]用C语言实现复数ADT,并编写测试程序。[目的]用C语言实现复数ADT;学习使用模块结构;学习编写调试程序。陟骤].复数类型的ADT定义。ADTComplex(数据对象:D={r,i|r,iGR)数据关系:Rl={<r,i>|r是复数的实部,i是复数的虚部)基本操作:CreateComplex(&z,r,i)z2)z2)z2)z2)GetRealPart(z)GetlmagePart(z)AddComplex(&z,z2)z2)z2)z2).复数类型的实现。1)类型描述。/Z复数类型描述typedefstructComplex{doublerealpart;doubleimagepart;}Complex;2)基本操作的声明。StatusCreateComplex/Z复数基本操作StatusCreateComplexComplex&z,doubler,doubledoubleGetRealPart(Complexz);doubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(3)基本操作的实现。/Z复数基本操作的实现doubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(3)基本操作的实现。/Z复数基本操作的实现(Complexz)Complex&z,ComplexComplex&z,ComplexComplex&z,ComplexComplex&z,Complexzl,zl,zl,zl,ComplexComplexComplexComplexz2);z2);z2);z2);StatusCreateComplex(Complex&z,doubler,double(z.realpart=r;z.imagepart=i;returnOK;doubleGetRealPart(Complexz)(returnz.realpart;)doubleGetImagePart(Complexz)(returnz.imagepart;}StatusAddComplex(Complex&z,Complexzl,Complexz2){z.realpart=zl.realpart+z2.realpart;z.imagepart=zl.imagepart+z2.imagepart;returnOK;StatusSubComplex(Complex&z,Complexz丄,Complexz2)(z.realpart=zl.realpart-z2.realpart;z.imagepart=zl.imagepart-z2.imagepart;returnOK;StatusMulComplex(Complex&z,Complexzl,Complexz2)(z.realpart=zl.realpart*z2.realpart-zl.imagepart*z2.imagepart;z.imagepart=zl.realpart*z2.imagepart+zl.imagepart*z2.realpart;returnOK;}StatusDivComplex(Complex&z,Complexzl,Complexz2)(doubleb;b=z2.realpart*z2.realpart-z2.imagepart*z2.imagepart;if(b==0)returnERROR;else{z.realpart=(zl.realpart*z2.realpart+zl.imagepart*z2.imagepart)/b;z.imagepart=(-zl.realpart*z2.imagepart+zl.imagepart*z2.realpart)/b;returnOK;)3.}模块设计主程序:测试复数模块的程序。复数模块:实现复数类型的程序。类C通用模块:包含类C中的预定义常量和类型。模块的组织:

主程序CXX0103.CPP#include<stdio.h>#include"complex.hnvoidShowMainMenu();intGetChoice();voidmain()(voidShowMainMenu()(intGetChoice()复数模块COMPLEX.H//防止重复包含#ifndef_COMPLEX_H_#define_COMPLEX_H_#include”ds.h”/Z复数类型描述typedefstructComplex{doublerealpart;doubleimagepart;}Complex;//基本操作的声明StatusCreateComplex(Complex&z,doubler,doublei);doubleGetRealPartdoubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex(Complexz);doubleGetRealPartdoubleGetImagePartStatusAddComplex(StatusSubComplex(StatusMulComplex(StatusDivComplex((Complexz)Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);Complex&z,Complexzl,Complexz2);//////////////////////////////基本操作的实现StatusCreateComplex(Complex&z,doubler,doublei){z.realpart=r;z.imagepart=i;returnOK;}doubleGetRealPart(Complexz)(returnz.realpart;••.(以下省略)#endif//_COMPLEX_H_类C通用极块#ifndef_DS_H_#define_DS_H_/Z函数结果状态代码TOC\o"1-5"\h\zconstint TRUE = 1;constint FALSE = 0;constintOK=1;constint ERROR = 0;constintINFEASIBLE =-1;constintOVERFLOW =-2;//Status是函数的类型,其值是函数结果状态代码typedefintStatus;#endif//_DS_H_4.测试程序的设计测试程序采用菜单命令的方式根据用户输入的命令反复测试。程序开始显示菜单提示,根据用户输入进行相应的测试,然后再显示菜单,直到用户选择退出测试程序。while(TRUE){ShowMainMenu();cmd=GetChoice();switch(cmd){/Z创建复数break;//...case0:/Z退出return;default:/Z错误命令)显示菜单的程序:/Z显示主菜单voidShowMainMenu()(staticchar*menu[]={"复数类型测试程序","1创建复数",«2 ”,"0退出程序”);inti;for(i=0;i<sizeof(menu)/sizeof(char*);i++)printf("%s\n”,menu[i]);な择菜单的程序:/Z得到用户选择的菜单项intGetChoice()inti;printf("请输入您的选择:");scanf(n%dn,&i);returni;.录入源程序参见所附源程序。.测试数据和结果包括:准备好的测试数据,期望结果,实际运行结果(运行程序后填写,并与期望结果对照)。.总结考虑:い怎样将类C语言算法改写成C语言程序?2)怎样书写程序才能提高代码的可读性?如:模块划分,函数声明的位置,主函数的位置,函数具体实现的位置,采用缩进格式等。3)编写头文件的技巧。如何防止重复包含。4)还遇到那些问题?[源程序]文件:DS.H类C中通用的常量和类型(略)。文件:COMPLEX.H复数的定义和实现(略)。文件:CXX0103.CPP测试程序(C代表班级,XX代表学号,0103代表实验1-3)(略)。实验1-4时间复杂度[题目]分析和测试不同程序段的时间复杂度。[目的]通过统计不同算法中指定语句的执行频度,分析算法的时间复杂度。陟骤][源程序]文件:FREQ.H用于统计执行频度的算法(程序段)//////////////////////////////File: freq.h//For: 统计语句执行频度//Author://Date:////////////////////////////#ifndef_FREQ_H_#define_FREQ_H_//////////////////////////////函数声明intfreql(intn);intfreq2(intn);intfreq3(intn);//////////////////////////////函数实现intfreql(intn)(inti,k;k=0;for(i=0;i<n;i++){//...k++;)returnk;intfreq2(intn)(inti,j,k;k=0;for(i=0;i<n;i++){for(j=0;j<n;j++){//...k++;})returnk;intfreq3(intn)(inti,j,k;k=0;for(i=0;i<n;i++){for(j=0;j<i;j++){//...k++;returnk;#endif//_FREQ_H_文件:CXX0104.CPP测试程序(C代表班级,XX代表学号,0104代表实验1-4)(略)。第2章线性表实验2-1顺序表[题目]实现顺序表的基本操作,编写将两个顺序表合并的算法。[目的]掌握顺序表的实现;顺序表的应用。陟骤].问题分析21概要设计分为主程序模块、顺序表模块和测试程序模块。主程序模块:调用测试程序。测试程序模块:包含顺序表合并算法和顺序表测试程序。顺序表模块:实现顺序表的基本操作。.详细设计1)主程序(略)2)测试程序(略)3)顺序存储结构的线性表的实现类型描述。(略)基本操作的声明。(略)基本操作的实现。(略).调试分析.测试结果6•用户手册.总结[源程序]©title:数据结构实验如ame:く实验2-1>线性表的顺序存储结构©object:[实验目的]线性表的顺序存储结构及其基本操作的实现[实验提示].在sqlist.h中实现顺序表的基本操作.在dsp0201.cpp中编写适当的代码,进行测试©include:sqlist.h[*]顺序表的实现©usage:请查看〃TO-DO列表〃,根据要求完成代码©copyright:BTC2005,ZhuangBo©author:ZhuangBo©date:2005©description:#include<stdio.h>#include<stdlib.h>#include〃ds.h”#defineElemTypeint 〃数据元素的类型Statusprint(ElemTypee); /Z打印数据元素的方法boolequal(ElemTypea,ElemTypeb);〃比较两个元素相等的方法ttinclude"sqlist.h〃〃打印顺序表内容voidPrintLinkList(SqListL);intmain()(SqListL;〃D初始化顺序表InitList(L);〃2)插入ー些元素:12,23,34,45Listinsert(L,1,12);Listinsert(L,1,23);Listinsert(L,1,34);Listinsert(L,1,45);〃3)打印顺序表信息printf("\n开始时顺序表内容、n");PrintLinkList(L);printf(*ListLength(L):%d\n”,ListLength(L));printf(*ListEmpty(L):%d\n”,ListEmpty(L));〃4)顺序表插入printf("\n请输入一元素:");ElemTypex;read(x);printf("插入开头:");Listinsert(L,1,x);PrintLinkList(L);printf(〃插入末尾:");Listinsert(L,ListLength(L)+1,x);PrintLinkList(L);〃5)顺序表删除printf("\n请选择删除第i(1.・%d)个元素:",ListLength(L));inti;read(i);ElemTypee;if(ListDelete(L,i,e)==OK){Statusprint(ElemTypee);〃声明print(e)函数printf("删除");print(e);printf("成功、n");}elseprintf("删除失败.\n");printf("顺序表内容:");PrintLinkList(L);〃6)元素定位printf("\n请输入ー个元素以便定位:");read(x);i=LocateElem(L,x);if(i!=0){printf("该元素是表中的第%d个元素.\n",i);}elseprintf("该元素在表中不存在.'n");〃7)清空顺序表ClearList(L);printf(z/\n最后顺序表内容、n");PrintLinkList(L);printf(*ListLength(L):%d\n*»ListLength(L));printf("XistEmpty(L):%d\nzz,ListEmpty(L));〃8)销毁顺序表DestroyList(L);system(ZZPAUSEZZ);return0;)/Z打印数据元素的方法Statusprint(ElemTypee){printf("%5d”,e);returnOK;)〃比较两个元素相等的方法boolequal(ElemTypea,ElemTypeb)(returna==b;)〃打印顺序表内容voidPrintLinkList(SqListL)(ListTraverse(L,print);〃遍历顺序表并print()每个元素printf("\n〃);Name:sqlist.hCopyright:Author:Date:21-03-0520:21Description:*/#ifndefSQLIST_H_INCLUDEDttdefineSQLIST_H_INCLUDED#include〃ds.h"//forStatus,OK...#ifndefElemType#defineElemTypeint/・数据元素类型默认为int*/#defineELEMTYPE_TAGttendif顺序表的存储结构定义defineLIST_INIT_SIZE100/・存储空间初始分配容量・/defineLISTINCREMENT10/・存储空间分配的增量・/typedefstruct{ElemType*elemJ 〃存储空间基址intlength; 〃当前长度intlistsize! 〃当前已分配的存储空间(元素个数)}SqList;顺序表的基本操作声;明〃创建并初始化为空表StatusInitList(SqList&L);〃销毁整个表(从此之后不再可用)StatusDestroyList(SqList&L);〃将表L置空StatusClearList(SqList&L);〃判断表L是否为空表boolListEmpty(SqListL);〃求表L的长度intListLength(SqListL);〃取表L中的第i个元素,并用e返回.操作成功返回0K,失败时返回ERRORStatusGetElem(SqListL,inti,ElemType&e);template<typenameT>boolequal(Ta,Tb){returna==b;)〃在表L中定位元素e首次出现的位置.操作成功返回位序,失败时返回0//compare(a,b)为比较函数,匹配时返回true,否则返回false/Z 这里默认使用equal进行比较intLocateElem(SqListL,ElemTypee,bool("compare)(ElemType,ElemType)=equal<ElemType>);〃在表L中插入第i个元素e.操作成功返回0K,失败时返回ERRORStatusListinsert(SqList&L,inti,ElemTypee);〃删除表L中第i个元素,结果用e返回.操作成功返回0K,失败时返回ERRORStatusListDelete(SqList&L,inti,ElemType&e);〃遍历表L,对每个元素调用visit(x).StatusListTraverse(SqListL,Status("visit)(ElemType));"顺序表的基本操作的实现〃创建并初始化为空表StatusInitList(SqList&L)(//TODO(#1#):创建空表returnERROR;// )〃销毁整个表(从此之后不再可用)StatusDestroyList(SqList&L)(//TODO(#1#):销毁表returnERROR;// )〃将表L置空StatusClearList(SqList&L)(〃TODO(#1#):清空表returnERROR;// 〃判断表L是否为空表boolListEmpty(SqListL)(//TODO(#1#):顺序表判空returnfalse;// )〃求表L的长度intListLength(SqListL){//TODO(#1#):求顺序表长度return0;// )〃取表L中的第i个元素,并用e返回.操作成功返回0K,失败时返回ERRORStatusGetElem(SqListL,inti,ElemType&e)(//TODO(#1#):取元素returnERROR;// )〃在表L中定位元素e首次出现的位置.操作成功返回位序,失败时返回0//compare(a,b)为比较函数,匹配时返回true,否则返回falseintLocateElem(SqListL,ElemTypee,bool(*compare)(ElemType,ElemType))(//TODO(#1#):在表中定位元素e,用compare(a,b)匹配元素for(intj=0;j<L.length;j++)if(compare(L.elem[j],e))returnj;return0;// 〃在表L中插入第i个元素e.操作成功返回0K,失败时返回ERRORStatusListinsert(SqList&L,inti,ElemTypee)(//TODO(#1#):在链表中插入元素returnERROR;// )〃删除表L中第i个元素,结果用e返回.操作成功返回0K,失败时返回ERRORStatusListDelete(SqList&L,inti,ElemType&e)(//TODO(#1#):在顺序表中删除元素returnERROR;// )〃遍历表L,对每个元素调用visit(x).StatusListTraverse(SqListL,Status(*visit)(ElemType)){//TODO(#1#):遍历顺序表for(intj=0;j<L.length;j++)if(!visit(L.elem[j]))returnERROR;returnOK;// #ifdefELEMTYPEJTAG#undefElemType#undefELEMTYPE_TAG#endif#endif//SQLIST_H_INCLUDED/*Name:类C通用模块Copyright:BTC2004Author:ZhuangBoDate:2004Description:[Constants]TRUE/FALSE/OK/ERROR/INFEASIBLE/OVERFLOW[Types]Status[Functions]max(a,b)min(a,b)read(char/int/float/doub1e/char*)write(char/int/float/double/char*)

#ifndef_DS_H_#define_DS_H_/Z函数结果状态代码constintTRUE =1;constintFALSE0;constintOK =1;constintERROR0;constintINFEASIBLE=-1;constintOVERFLOW=-2;//Status是函数的类型,其值是函数结果状态代码typedefintStatus;〃基本函数#definemax(a,b)(((a)<(b))?(b):(a))#definemin(a,b)(((a)<(b))?(a):(b))ttinclude<stdio.h>〃不用格式串的输入输出(目的是为了方便书写算法)/Z 比如输入ー个基本类型(char,int,float,double,char*)的/Z变量x,可以直接用read(x);输入,而打印则用write(x);〇/Z对于自定义类型,可以继续扩充。inlineinlineinlineinlineinlineinlineinlineinlineinlineinlinevoidvoidvoidvoidvoidvoidvoidvoidvoidvoidread(char&e)read(int&e)read(float&e)read(double&e)read(char*e)write(chare)write(inte)write(floate)write(doublee)write(char*e){e=getchar();}{scanf("%d〃,&e);}{scanf(〃%f〃,&e);}{scanf(〃%lf”,&e);}{gets(e);}{printf(〃%c",e);){printf(〃%d〃,e);}{printf(〃%f",e);){printf("%lf〃,e);}{printf("%s〃,e);}#endif//_DSH©title:数据结构实验@name:く实验2-1>线性表(顺序表)的应用ー我的图书馆©object:[实验目的]应用线性表解决问题.有若干图书,借出的书需要登记下来.用两个线性表分别保存现有图书和借书信息,并实现增加新书,借书,还书,打印等功能.学习命令式程序界面的编写方法.[实验提示].在book,h中描述了描述书的Book类型,还有几个有关函数函数可以调用..在sqlist.h中完成顺序表的各种操作..借书时,输入书名,若有存书,则从存书表中删除,插入借书表..还书时,输入书名,若借过此书,则从借书表中删除,插入存书表.©include:用到的头文件©usage:请查看"TO-DO列表〃,根据要求完成代码©copyright:BTC2005,ZhuangBo©author:ZhuangBo©date:2005©description:#include<cstdlib>#include<iostream>usingnamespacestd;#include"book.h"ttdefineElemTypeBook〃使用Book作为线性表元素的类型#include"sqlist.h"SqLists; 〃存书表SqListbJ 〃借书表voidSystemlnitializeO;voidSystemTerminate();voidSystemRunO;intmain(intargc,char*argv[]){Systeminitialize();SystemRunO;SystemTerminate();system("PAUSE");return0;voidSystemlnitialize()(InitList(s);InitList(b);Bookmybooks[]={{〃CProgrammingLanguage"},{“DataStructures"},{"C++ProgrammingLanguage"),{"EffactiveC++"},{"MoreEffactiveC++"},{"DesignPatterns"}};for(inti=0;i<6;i++)Listinsert(s,i,mybooks[i]);}voidSystemRunO(charGetCommandO;voidDoCommand(charcmd);charcmd;do{cmd=GetCommand();DoCommand(cmd);}while(cmd!=,q');}charGetCommand()(charstr[64];cout<<"\na:新书b:借书r:还书p:打印q:退出"<<endl;cout«cin.getline(str,64);returnstr[0];}voidDoComm

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论