东北大学数据结构上机实验报告Word文档格式.docx

上传人:b****1 文档编号:3612199 上传时间:2023-05-02 格式:DOCX 页数:22 大小:79.96KB
下载 相关 举报
东北大学数据结构上机实验报告Word文档格式.docx_第1页
第1页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第2页
第2页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第3页
第3页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第4页
第4页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第5页
第5页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第6页
第6页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第7页
第7页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第8页
第8页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第9页
第9页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第10页
第10页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第11页
第11页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第12页
第12页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第13页
第13页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第14页
第14页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第15页
第15页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第16页
第16页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第17页
第17页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第18页
第18页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第19页
第19页 / 共22页
东北大学数据结构上机实验报告Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

东北大学数据结构上机实验报告Word文档格式.docx

《东北大学数据结构上机实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《东北大学数据结构上机实验报告Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

东北大学数据结构上机实验报告Word文档格式.docx

charprice[10];

//定价

}ElemType;

单链表结点类型

typedefstructLNode{

ElemTypedata;

structLNode*next;

}LinkList;

各程序模块之间的调用关系

4、详细设计

初始化

创建头结点实现线性表的初始化

L=(LinkList*)malloc(sizeof(LinkList));

L->

next=NULL;

用户界面

运用printf函数

录入

inti,n;

LinkList*s,*q,*p;

//创建单链表

p=L;

while(p->

next!

=NULL)

p=p->

next;

printf("

请输入需要录入的图书信息的个数:

n="

);

scanf("

%d"

&

n);

for(i=1;

i<

n+1;

i++){//创建图书信息

s=(LinkList*)malloc(sizeof(LinkList));

printf("

书号书名作者出版社名称存馆数量定价\n"

scanf("

%d%s%s%s%d%s"

s->

data.num,s->

data.name,s->

data.author,

s->

data.press,&

data.count,s->

data.price);

q=L->

if(q==NULL){//下一个节点为空即此节点为尾节点

p->

next=s;

p=s;

printf("

录入成功!

\n"

continue;

}

while(q!

=NULL){

if(strcmp(s->

data.name,q->

data.name)==0){

printf("

此图书已存在!

"

请重新输入:

scanf("

p->

data.num,p->

data.name,

p->

data.author,p->

data.count,

}

q=q->

p->

p=s;

Sleep(1000);

}

system("

cls"

menu();

return0;

查询

LinkList*p=L->

//p指向第一个数据结点

intc;

intx=0;

charname1[10],author1[10],press1[10];

1按书名查询:

2按作者名查询:

3按出版社名称:

4返回\n"

请选择1--4进行操作:

c);

if(c>

4||c<

1){

您的输入有误!

switch(c){

case1:

请输入图书书名:

\n"

%s"

name1);

while(p!

if(strcmp(name1,p->

data.name)!

=0)//查找图书书名

p=p->

else{

%d\t%s\t%s\t%s\t%d\t%s"

p->

data.press,p->

x++;

Sleep(2000);

if(p==NULL&

&

x==0)

对不起,不存在此图书!

break;

case2:

请输入图书作者:

author1);

if(strcmp(author1,p->

data.author)!

=0)//查找图书作者

case3:

请输入图书的出版社名称:

press1);

if(strcmp(press1,p->

data.press)!

=0)//查找图书出版社名称

%d%s%s%s%d%s"

data.name,p->

data.count,p->

对不起!

不存在此图书\n"

case4:

五、调试分析

所遇问题的解决方法及分析

当我编写录入函数时,对如何将数据储存到链表中无从下手。

后来经过查询和多次尝试,决定用尾插法建立链表,采用这样的方法简单明了,易于编程。

 

算法的时空分析及改进设想

O(n)

经验和体会

通过这次的上机实验,让我们对线性表的理解又有了进一步的提升,更加清楚地了解到线性表的储存方式。

6、使用说明

打开程序,根据界面提示即可

7、测试结果(截屏)

8、附录

#include<

stdio.h>

string.h>

#include<

stdlib.h>

malloc.h>

windows.h>

typedefstructLNode//定义单链表结点类型

{

voidmenu(){//菜单函数

----------------------------------------------------------\n"

欢迎光临图书管理系统!

-----------------------------------------------------------\n"

1.图书信息录入添加功能:

2.图书信息查询功能:

3.图书信息排序功能:

4.图书的修改功能:

5.图书的删除功能:

0.退出系统:

请选择你需要的操作:

}

voidInitList(LinkList*L)//初始化线性表

//创建头结点

intCreateListR(LinkList*L)//尾插法建表

i++){

if(q==NULL){

voidLocateElem(LinkList*L)//查询

LinkList*p=L->

switch(c){

intSort(LinkList*L)//递增有序排序(直接插入排序法)

next,*q,*r;

if(p!

=NULL)//若原单链表中有一个或以上的数据结点

{

r=p->

//r保存*p结点直接后继结点的指针

//构造只含一个数据结点的有序表

p=r;

r=p->

//r保存*p结点的直接后继结点的指针

q=L;

while(q->

=NULL&

q->

next->

data.num<

p->

data.num)

q=q->

//在有序表中找插入*p的直接前驱结点*q的位置

next=q->

//将*p插入到*q之后

q->

next=p;

p=r;

//扫描原单链表余下的结点

voidDisplay(LinkList*L)//输出排序结果

while(p!

%d\t%s\t%s\t%s\t%d\t%s"

data.num,

p->

intModifyList(LinkList*L)//修改

LinkList*p=L;

charname1[10];

请输入要修改的图书的书名:

if(strcmp(name1,p->

data.name)==0)//查找所要修改的书名

{

请输入修改后的信息!

scanf("

p->

修改成功!

return0;

intListDelete(LinkList*L)//删除

next,*q=L;

请输入要删除的书名:

strcmp(p->

data.name,name1)!

=0){

q=q->

if(p->

=NULL)//如果p此时不是最后一个节点,说明此时已经找到书

q->

next=p->

删除成功!

return0;

next==NULL&

strcmp(name1,p->

=0)//如果p此时为最后一个结点并且没有找到与之相符的书名

{

你输入的书名不存在,请核实后重新输入!

}else{

intmain()//主函数

ints;

LinkList*L;

InitList(L);

请输入编号:

s);

while(s!

switch(s){

case1:

CreateListR(L);

break;

case2:

LocateElem(L);

case3:

Sort(L);

Display(L);

case4:

ModifyList(L);

case5:

ListDelete(L);

case6:

Borrow(L);

case7:

Return(L);

case0:

谢谢使用\n"

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2