重庆邮电大学-软件技术基础--实验报告(耿道渠).pdf
《重庆邮电大学-软件技术基础--实验报告(耿道渠).pdf》由会员分享,可在线阅读,更多相关《重庆邮电大学-软件技术基础--实验报告(耿道渠).pdf(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件技术基础实验报告实验名称实验名称:顺序表的操作顺序表的操作班班 级级学学 号号姓姓 名名第第9周周星星 期期2、 5,6节节成成 绩绩一、实验目的一、实验目的:1、掌握顺序表结构的实现方式;2、掌握顺序表常用算法的实现;3、熟悉利用顺序表解决问题的一般思路;4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。二、实验内容二、实验内容:1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务:1建立一个顺序表,首先依次输人整数数据元素个数根据需要键盘给定 。2删除指定位置的数据元素指定元素位置通过键盘输入 ,再依次显示删除后的顺序表中的数据元素。3查找指
2、定数据的数据元素指定数据由键盘输入 ,假设找到则显示位置,假设没有找到则显示 0。2、使用顺序表实现一个本的管理程序,本中的每条记录包括学号、 、号码和固定四项。要求实现菜单、初始化、添加、删除和显示等功能。三、实验结果三、实验结果:- 1 -四、实验中遇到的问题及解决方法:四、实验中遇到的问题及解决方法:- 2 -第一次编写 C+,感觉力不从心,回去多看看 PPT。五、实验心得体会:对顺序表的一些常用语句不熟悉, 对顺序表的整体思路理解不深刻以后要加强练习附:源程序自行编写或修改的程序。假设为修改程序请注明修改部分的功能,假设为书上实例则可不附。#include #include #incl
3、ude #include #define MAXSIZE 20using namespace std;int num;typedef structstring student_number;string name;string tel;string home_phone;int id;TEL;void shuaxin(TEL *);void delet(TEL *);- 3 -void find(TEL *);void show(TEL *);int main(void)int choose;TEL ListMAXSIZE;while(1)cout *欢送来到 XXX本系统* endl;cou
4、t 1.初始化并建立 endl;cout 2.删除 endl;cout 3.查找 endl;cout 4.显示全部 endl choose;system(cls);while( choose 4)cout 输入错误,数字 1-4,请重新输入! choose;system(cls);- 4 -switch(choose)/system(cls);case 1: shuaxin(List); break;case 2: delet(List); break;case 3: find(List); break;case 4: show(List); break;return 0;void shuax
5、in(TEL * list)int i,j;for(i = 0; i MAXSIZE; i+)listi.id = i + 1;listi.home_phone = none;listi.name = none;listi.student_number = none;listi.tel = none;- 5 -system(cls);cout 初始化成功,现在开始建表: endl;cout 请输入需要建立的个数:(小于 MAXSIZE ) num;while( num MAXSIZE )system(cls);cout 输入错误,请重新输入 num;system(cls);cout 请依次输入
6、学生的学号, ,移动,家庭for(j = 1; j = num; j+)cout j listj - 1.student_number;cin listj - 1.name;cin listj - 1.tel;cin listj - 1.home_phone;cout endl;- 6 - endl;if(num = (j - 1) )system(cls);cout 建立表完毕! endl;void delet(TEL * list)int j,i = 0;cout 请输入你需要删除的序号 j;while( j num)while(listi.id != j)i+;cout 输入错误,请重新
7、输入 j;for(j = i; j num - 1; j+)listj.name = listj + 1.name;- 7 -listj.tel = listj + 1.tel;listj.student_number = listj + 1.student_number;listj.home_phone = listj + 1.home_phone;listj.home_phone = none;listj.name = none;listj.student_number = none;listj.tel = none;num-;system(cls);cout 删除完毕 endl;void
8、 find(TEL * list)string telnum;int i,key = 0;cout 请输入你需要查找的号码 telnum;system(cls);- 8 -for(i = 0; i MAXSIZE; i+)if(telnum = listi.tel | telnum = listi.home_phone)if(key = 0)cout 依次学号移动 endl;cout listi.id .;cout setw(12) listi.student_number;cout setw(10) listi.name;cout setw(14) listi.tel;cout setw(1
9、0) listi.home_phone;cout endl;key = 1;if( key = 0)cout 未找到此号码 endl;void show(TEL * list)- 9 -家庭int i;cout 现在有 num 个号码 endl;cout 依次学号移动家庭 endl;for(i = 0; i num; i+)cout 输出完毕 endl;cout listi.id .;cout setw(12) listi.student_number;cout setw(10) listi.name;cout setw(14) listi.tel;cout setw(10) listi.ho
10、me_phone;cout endl;软件技术基础实验报告- 10 -实验名称实验名称:链表的操作一链表的操作一班班 级级学学 号号姓姓 名名第第10周周星星 期期2、 5,6节节成成 绩绩一、实验目的一、实验目的:1、掌握单链表结构的实现方式;2、掌握单链表常用算法的实现。二、实验内容二、实验内容:1、设计一个链表,要求编程实现如下任务:1建立一个链表,首先依次输人整数数据元素个数根据需要键盘给定 。2删除指定值的结点指定值通过键盘输入 ,再依次显示删除后的链表中的数据元素。3查找指定值的结点指定数据由键盘输入 ,假设找到则显示查找成功,假设没有找到则显示查找失败。4) 在第 i 个节点i
11、由键盘输入,i=0 表示插入的结点作为第 1 个结点之后插入一个元素为 x 的节点。三、实验结果三、实验结果:四、实验中遇到的问题及解决方法:四、实验中遇到的问题及解决方法:- 11 -编写过程中经常把 C 语言和 C+的语句形式搞混乱, 课后认真了解了 C+后得以解决。五、实验心得体会:五、实验心得体会:对单链表的实现方式和常用算法掌握不足, 对 C+部分基本概念不熟悉,需课后补强附:源程序自行编写或修改的程序。假设为修改程序请注明修改部分的功能,假设为书上实例则可不附。#include#include#includestruct LNodeint data;LNode *find(LNod
12、e *head,int x)LNode *p=head-next;while(p!=NULL & p-data!=x)p=p-next;struct LNode *next;- 12 -return p;void Insert(LNode *head,int i,int x) if(i1)cout不存在第i个位置;elseLNode *p=head;int k=0;while(p!=NULL & ki-1)if(p=NULL)couti超出链表最大可插入位置next;k+;elseLNode *s=new LNode;s-data=x;- 13 -s-next=p-next;p-next=s;
13、void Delete(LNode *head,int i)if(i1)cout不存在第i个元素;elseLNode *p=head;LNode *q;int k=0;while(p!=NULL & knext;k+;- 14 -couti超出链表长度next=p-next;delete p;void main()LNode *head,*p;head=new LNode;head-next=NULL;int i,x,y;cout请输入 5 个数,每个书中间空一格:endl;for(i=1;ix;Insert(head,i,x);- 15 -cout请输入需要删除的节点(15):i;Delet
14、e(head,i);cout删除的节点i后输出为:next;while(p!=NULL)coutendl;coutx;if(find(head,x)!=NULL)cout查找成功endl;elsecout查找失败endl;coutdatanext;coutendl;i=0;x=0;cout请输入在 i 节点及元素 xix;- 16 -Insert(head,i,x);cout显示:next;while(p!=NULL)coutdatanext;coutendl;- 17 -软件技术基础实验报告实验名称实验名称:链表的操作二链表的操作二班班 级级学学 号号姓姓 名名第第11周周星星 期期2、 5
15、,6节节成成 绩绩一、实验目的一、实验目的:1、熟悉利用线性链表解决问题的一般思路;2、参照给定的链表的程序样例,验证给出的链表的常见算法,了解单链表结构的优点和不足。二、实验内容二、实验内容:1、使用链表实现一个本的管理程序,本中的每条记录包括和两项。要求实现菜单管理、记录的添加、删除和显示等功能。三、实验结果三、实验结果:- 18 -四、实验中遇到的问题及解决方法:四、实验中遇到的问题及解决方法:对查找名字、查找号码等功能掌握不清,问老师和同学后基本清楚五、实验心得体会:五、实验心得体会:体会到了 C+的神奇与精彩,但是自己还不能实现这种神奇,到达这种精彩,但是增强了自身兴趣附:源程序自行
16、编写或修改的程序。假设为修改程序请注明修改部分的功能,假设为书上实例则可不附。#include #include #include #include #define LEN sizeof(TEL)- 19 -#define SIZE sizeof(Size)int n = 0;typedef struct telchar name10;long num;struct tel * next;TEL;typedef struct tel_sizechar name10;long num;Size;TEL * search(void);/从文件读取TEL * insert(TEL *head);/插
17、入TEL * del(TEL * head);/删除void showall(TEL * head);/输出到屏幕void find_name(TEL * head);/通过名字查找- 20 -void find_number(TEL * head);/通过号码查找TEL * revise(TEL * head);void sav(TEL * head);/储存int main(void)printf(welcome to this telphone number systemn);head = search();printf(1.insertn);/选择显示界面printf(2.deln);
18、printf(3.showalln);printf(4.find_namen);printf(5.find_numbern);printf(6.revisen);printf(7.saven);printf(8.endn);do/选择项TEL * head = NULL;int choose;- 21 -printf(please choose your choose:n);scanf(%d,&choose);switch(choose)case 1:head = insert(head);break;case 2:head = del(head);break;case 3:showall(h
19、ead);break;case 4:find_name(head);break;case 5:find_number(head);break;case 6:head = revise(head);break;case 7:sav(head);break;case 8:return 0;default:printf(input wrong!n);printf(n);while(1);return 0;- 22 -TEL * search(void)/寻找文件是否存在函数if( ( fp = fopen(TELnumber.txt,a+) ) = NULL)/打开或者新建文件fseek(fp,0L
20、,0);/文件指针倒回到开头while(!feof(fp)if( fread(p1,SIZE,1,fp) != 1 )/需要防止读出错误情况break;printf(cant open file!n);exit(0);FILE * fp;TEL * head = NULL;TEL * p2,* p1;p1 = p2 = (TEL *)malloc(LEN);if(head = NULL)head = p1;else p2-next = p1;- 23 -p2 = p1;n+;p1 = (TEL *)malloc(LEN);free(p1);p2-next = NULL;fclose(fp);r
21、eturn head;TEL * insert(TEL * head)/插入新号码函数TEL * p0, * p1, * p2;p0 = (TEL *)malloc(LEN);printf(please input a name and number:n);scanf(%s %ld,p0-name,&p0-num);p1 = head;p2 = p1;if(head = NULL)- 24 -head = p0;p0-next = NULL;elsewhile( strcmp(p0-name,p1-name) 0 & p1-next !=NULL)/比较字符串,找到应该插入位置n+;if( s
22、trcmp(p0-name,p1-name) next = p0;p0-next = p1;p2 = p1;p1 = p1-next;elsep1-next = p0;p0-next = NULL;- 25 -return head;TEL * del(TEL * head)/删除函数TEL * p1, * p2;p1 = head;long dele;printf(please input what number do you want to del:n);/输入删除的号码if(head = NULL)printf(NULL list!n);/空表情况elsewhile(dele != p1
23、-num & p1 != NULL)/找到位置p2 = p1;p1 = p1-next;scanf(%ld,&dele);- 26 -void showall(TEL * head)/打印函数int i = 0;TEL * p;p = head;if(head = NULL)printf(NULL list!n);/空表情况return head;if(dele = p1-num)if(dele = head-num)/删除在头部情况head = head-next;else p2-next = p1-next;/输出删除的数据并用链表架空printf(dele this personnumb
24、er:n);printf(%10s %15ld,p1-name,p1-num);n-;else printf(cant find this person!n);/没找到情况- 27 -elseprintf(there is%d number:n,n);printf(namenumbern);doi+;printf(%d.%10s %15ldn,i,p-name,p-num);p = p-next;while(p != NULL);void find_name(TEL * head)/以名字方式寻找号码TEL * p;int dis = 0;char f_name20;p = head;prin
25、tf(please input a name:n);/输入名字scanf(%s,f_name);if(head = NULL)- 28 -printf(NULL list!n);/空表情况elsedoif(strcmp(p-name,f_name) = 0)/只要找到同名 均输出p = p-next;dis = 1;printf(find this person:n);printf(%s %15ldn,p-name,p-num);while(p != NULL);if(dis = 0)printf(cant find this person!n);void find_number(TEL *
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重庆 邮电大学 软件技术 基础 实验 报告 耿道渠
限制150内