软件技术基础-实验指导书

时间:2025-04-23

实验指导书

《软件技术基础》实验指导书

1

实验指导书

目录

《软件技术基础》上机实验的目的和要求 ............................................................................................ 3 实验一、单链表的插入和删除................................................................................................................... 4 实验二、二叉树操作 .................................................................................................................................... 8 实验三、图的遍历操作 .............................................................................................................................. 12 实验四、排序................................................................................................................................................ 19 实验五、查找................................................................................................................................................ 25

2

实验指导书

《软件技术基础》上机实验的目的和要求

通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。

要求所编的程序能正确运行,并提交实验报告。实验报告的基本要求为: 1、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定: (1)输入的形式和输出值的范围; (2)输出的形式;

(3)程序所能达到的功能;

(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。

2、概要设计:说明用到的软件技术基础定义、主程序的流程及各程序模块之间的调用

关系。

3、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。 4、调试分析:

(1)调试过程中所遇到的问题及解决方法; (2)算法的时空分析; (3)经验与体会。

5、用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。

6、测试结果:列出对于给定的输入所产生的输出结果。若有可能,测试随输入规模的

增长所用算法的实际运行时间的变化。

3

实验指导书

实验一、单链表的插入和删除

一、目的:

了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。

二、要求:

建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。

三、示例程序:

#include "stdio.h" #include "string.h" #include "stdlib.h"

typedef struct node //定义结点 {

char data[10]; //结点的数据域为字符串 struct node *next; //结点的指针域 }ListNode;

typedef ListNode * LinkList; // 自定义LinkList单链表类型

LinkList CreatListR1(); //函数,用尾插入法建立带头结点的单链表 ListNode *LocateNode(LinkList head, char *key); //函数,按值查找结点

void DeleteList(LinkList head,char *key); //函数,删除指定值的结点

void printlist(LinkList head); //函数,打印链表中的所有值 void DeleteAll(LinkList head); //函数,删除所有结点,释放内存

//==========主函数============== void main() {

char *ch; char num[4]; char b[8]; ch=&b[0]; LinkList head;

head=CreatListR1(); //用尾插入法建立单链表,返回头指针 printlist(head); //遍历链表输出其值

4

实验指导书

printf(" Delete node (y/n):"); //输入"y"或"n"去选择是否删除结点 scanf("%s",num);

if(strcmp(num,"y")==0 || strcmp(num,"Y")==0){ }

DeleteAll(head); //删除所有结点,释放内存 }

//==========用尾插入法建立带头结点的单链表=========== LinkList CreatListR1(void) {

char *ch; char a[8]; ch=&a[0];

LinkList head=(LinkList)malloc(sizeof(ListNode)); //生成头结点 ListNode *s,*r,*pp; r=head; r->next=NULL;

printf("Input # to end "); //输入"#"代表输入结束 printf("Please input Node_data:");

scanf("%s",ch); //输入各结点的字符串 while(strcmp(ch,"#")!=0) {

pp=LocateNode(head,ch); //按值查找结点,返回结点指针 if(pp==NULL) { //没有重复的字符串,插入到链表中 }

printf("Input # to end "); printf("Please input Node_data:"); scanf("%s",ch);

s=(ListNode *)malloc(sizeof(ListNode)); strcpy(s->data,ch); r->next=s; r=s;

r->next=NULL;

printf("Please input Delete_data:");

scanf("%s",ch); //输入要删除的字符串 DeleteList(head,ch); printlist(head);

}

return head; //返回头指针 }

//==========按值查找结点,找到则返回该结点的位置,否则返回NULL========== ListNode *LocateNode(LinkList head, char *key)

5

实验指导书

{

ListNode *p=head->next; //从开始结点比较

while(p && strcmp(p->data,key)!=0) //直到p为NULL或p-> data为key止 }

//==========删除带头结点的单链表中的指定结点======= void DeleteList(LinkList head,char *key) {

ListNode *p,*r,*q=head;

p=LocateNode(head,key); //按key值查找结点 …… 此处隐藏:9473字,全部文档内容请下载后查看。喜欢就下载吧 ……

软件技术基础-实验指导书.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219