上机实验内容顺序表部分第1题参考

合集下载

上机实验内容

上机实验内容

实验一模型描述在第一个模型里,由一条生产线处理三种物料。

每种物料按正态分布随机到达,之后进入队列等待检验。

检验机1检验物料类别1,检验机2检验物料类别2,检验机3检验物料类别3。

检验之后,物料被输送机运往出口。

整个模型如下图所示:模型数据:物料到达: 正态分布N(20,2)队列容量: 25检验时间: 指数分布l(30)输送机速度: 1米/秒物料路线: 物料1到检验机1, 物料2到检验机2, 物料3到检验机3实验二模型描述在第二个模型里,我们使用由两个人组成的一个工作团队来执行检验机的启动程序。

检验机一旦启动,则不在需要操作人员在场。

同时,在启动之前,操作者必须把物料搬运到检验机所在位置。

当物料检验完毕后直接移动到输送机,不再需要操作人员的帮助。

当物料达到输送机的末端时,将被置于一个队列中,之后由叉车送到出口处。

整个模型如下图所示:模型数据:检验机启动时间: 10秒产品处理: 操作者从队列到检验机,叉车从输送机队列到出口输送机队列容量: 10实验三模型描述在模型3中,出口将有3个货架取代,用于产品出厂前的存放。

采用一个表格进行定义,将物料1送到货架2,物料2送到货架3,物料3送到货架1。

再者,使用网络节点设置叉车搬运路线。

整个模型如下图所示:Figure 3-1. Model 3 diagram模型数据:输送机1、2、3将物料输送到输送机队列。

输送队列到货架的路线:采用一个表格定义以下的物料路线——将物料1送到货架2,物料2送到货架3,物料3送到货架1。

设置叉车从输送队列到货架搬运路线的网络节点。

实验4:多产品单阶段制造系统仿真与分析模型描述某工厂加工三种类型产品的过程。

这三类产品分别从工厂其他车间达到该车间。

这个车间有3台机床,每台机床可以加工一种特定的产品类型。

一旦产品在相应的机床上完成加工,所有产品都必须送到一个公用的检验台进行质量检测。

检测合格送往下一个车间,不合格则必须送回相应的机床进行再加工。

2018大学计算机基础上机实验报告

2018大学计算机基础上机实验报告

实验(一)1:计算机硬件系统虚拟拆卸实验学号: 201801221 姓名:徐景全微型计算机拆卸顺序记录表实验(一)2:一条指令的执行过程实验学号: 2018011221 姓名:徐景全实验(二)1:计算机中的数据表示与计算实验学号: 201801221 姓名:徐景全实验报告表1 数值型数据在计算机中的二进制实验记录表说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用4个字节存储,其中阶码部分占一个字节。

实验报告表2 其他进制数据与二进制转化实验记录表实验报告表3 数据的原码、补码和反码表示实验记录表实验报告表4 二进制算术运算实验记录表实验报告表5溢出实验记录表实验报告表6浮点数的小数点浮动实验记录表实验报考表7 表示浮点数的二进制串中阶码位数改变实验记录表实验(二)2:字符编码与信息交换实验学号: 201801221 姓名:徐景全实验报告表1 西文字符显示过程编码记录表实验报告表2 汉字显示过程编码记录表实验报告表3 不同字体的字型码实验(三)1:广域网通信与邮件传输实验学号: 2018011221 姓名:徐景全实验报告表1 网络中实现通信互联的主要设备和其功能实验报告表2域名解析的IP路由通讯的过程实验报告表3数据在网络中的IP路由通讯过程实验报告表4路由器是如何确定进行转发的下一跳路径的实验(三)2:云计算与虚拟服务实验学号: 2018011221 姓名:徐景全实验报告表1 并行算法和串行算法实验数据表实验报告表2分布式实验数据表实验报告表3虚拟计算实验数据表实验(四)数据库管理与数据库操作实验学号: 2018011221 姓名:徐景全实验报告表1 数据库管理系统实验数据表实验报告表2虚拟数据库设计实验报告表3虚拟数据库查询。

软基上机实验报告-顺序表

软基上机实验报告-顺序表

一、实验项目名称:ex1_1——基本题:1)首先创建一个顺序表:从键盘读入一组整数(长度小于等于20),按输入顺序放入顺序表,输入以-1结束(注意-1不放到顺序表内);将创建好的顺序表元素依次输出到屏幕上。

2)在已创建好的顺序表中插入一个元素:从键盘读入需插入的元素值和插入位置,调用插入函数完成插入操作;然后将顺序表元素依次输出到屏幕上。

3)在已创建好的顺序表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作;然后将顺序表元素依次输出到屏幕上。

软件技术基础实验table.cpp二、程序代码#include "stdafx.h"#include "mystruct.h"#include "ui.h"/******************************************************************************************* ** Function name: init_table()** Descriptions : 初始化顺序表,顺序表利用数组作为基础,其特点是需要事先获得全部元素空间,因此本函数的主要功能就是向系统申请足够的空间作为顺序表的存储空间。

涉及的系统函数为:malloc()** 此外,良好的习惯是将空间内的各项数据进行适当的初始化** Input: NONE** Output: NONE** return: 类型:table_t *,返回顺序表的结构指针** Created by :** Created Date :**-------------------------------------------------------------------------** Modified by :** Modified Date:**-------------------------------------------------------------------------*******************************************************************************************/ table_t * init_table( ){table_t * t;t=(table_t *)malloc(sizeof(table_t));t->length = 0;return t;}/******************************************************************************************* ** Function name: free_table()** Descriptions : 释放顺序表空间** 当程序结束时会通过本函数来释放通过malloc获得的顺序表空间** Input: table_t * t; 顺序表指针** Output: NONE** return: 类型:void** Created by :** Created Date :**------------------------------------------------------------------------------------------** Modified by :** Modified Date:**------------------------------------------------------------------------------------------*******************************************************************************************/ void free_table(table_t * t){free(t);}/******************************************************************************************* ** Function name: get_table()** Descriptions : 查询顺序表** 查询顺序表中第i个元素** Input:** table_t * table; 顺序表指针** int index; 查询位置,即第i个元素** Output:** element_t * elem; 元素域指针,用来存放被查询到的元素内容,** (注意,需要将元素全部内容拷贝到该指针所记录的空间中,即,使用memcpy())** return: 类型:int,返回查询是否成功,为0表示找到指定元素,为-1表示没有找到,一般是因为** index指示的位置超出了顺序表的范围** Created by :** Created Date :**-------------------------------------------------------------------------** Modified by :** Modified Date:**-------------------------------------------------------------------------*******************************************************************************************/ int get_table(table_t * table,int index, element_t * elem){//判断index是否超出顺序表范围if(index <= 0 || index > table->length){return -1;}//复制元素内容到指定空间中;memcpy(elem,&(table->data[index-1]),sizeof(element_t));//errorreturn 0;}/******************************************************************************************* ** Function name: add_table()** Descriptions : 将指定元素放入到顺序表的末尾** Input:** table_t * table; 顺序表指针** element_t data; 待放入的元素** Output:** table_t * table; 添加新元素后的顺序表指针** return: 类型:int; 为-1表示放入失败,一般是因为顺序表已经放满,为0表示正确放入** Created by :** Created Date :**-------------------------------------------------------------------------** Modified by :** Modified Date:**-------------------------------------------------------------------------*******************************************************************************************/ int add_table(table_t * table, element_t data){table->data[table->length] = data;table->length ++;return 0;}/******************************************************************************************* ** Function name: insert_table()** Descriptions : 将指定元素插入到顺序表的指定位置之前** Input:** table_t * table; 顺序表指针** element_t data; 待放入的元素** int location; 插入位置,语义是:第X个元素前,,当location大于链表元素总数时,该元素** 将插入到表尾。

实验1-2顺序表和链表基本操作_参考答案

实验1-2顺序表和链表基本操作_参考答案

实验1、2:线性表的应用参考代码一、实验预备知识1.复习C中编写函数的相关内容。

2.复习如何用主函数将多个函数连在一起构成一个C完整程序。

二、实验目的1.掌握线性表的顺序和链式存储结构2.熟练运用线性表在顺序存储方式下的初始化、创建、输出、插入和删除运算3.熟练运用线性表在链式存储方式下的创建、输出、插入和删除运算三、实验要求1.编写初始化并创建线性表和输出线性表的算法。

2.编写对线性表插入和删除运算算法,要判断位置的合法性和溢出问题。

3.编写有序表的插入和删除运算算法。

4.编写一个主函数,将上面函数连在一起,构成一个完整的程序。

5.将实验源程序调试并运行,写出输入、输出结果,并对结果进行分析。

四、实验内容顺序表实验内容:1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。

2.初始化并建立顺序表。

(开辟的存储空间大小为8)3.编写顺序表输出算法。

4.依次插入3、21、15、99四个数,分别插入在第1、8、4和12位置,每插入一次都要输出一次顺序表。

5.删除第1,第9和第12个位置上的元素,每删除一个元素都要输出一次顺序表。

6.编写一个排序算法,对线性表中元素从小到大排列。

7.向有序表分别插入20和50,插入后表仍然有序。

(修改开辟的存储空间大小为15)单链表实验内容:1.给定的线性表为L=(12,25,7,42,19,38),元素由键盘输入。

2.建立一个带表头结点的单链表(前插入法和尾插入法均可)。

3.编写单链表输出算法。

4.依次插入3、21、15、99四个数,分别插入在第1、8、4和12位置,每插入一次都要输出一次单链表。

5.删除第1,第9和第12个位置上的元素,每删除一个元素都要输出一次单链表。

6.编写一个排序算法,对链表中元素从小到大排列。

7.向有序链表分别插入20和50,插入后表仍然有序。

五、实验结果顺序表源程序:#include <iostream>using namespace std;const int MAXSIZE=8; //做有序表插入操作时,将8改为15typedef int DataType;typedef struct{DataType data[MAXSIZE];int length;}SeqList;void Init_SeqList(SeqList &L);//创建空顺序表算法void Show_SeqList(SeqList L);//顺序表输出算法void Create_SeqList(SeqList &L);//顺序表创建算法int Insert_SeqList(SeqList &L,DataType x,int i);//顺序表的插入算法int Delete_SeqList(SeqList &L,int i);//顺序表的删除算法int Locate_SeqList(SeqList L,DataType x);//顺序表的按值查找算法void Sort_SeqList(SeqList &L);//顺序表的排序算法int Insert_SeqList_sort(SeqList &L,DataType x);//有序表的插入算法void Merge(SeqList LA,SeqList LB,SeqList &LC);//两个有序顺序表的合并算法void menu(); //菜单算法void main(){ menu(); }void menu()//菜单算法{SeqList L;Init_SeqList(L);int m;while(1){cout<<"\n根据所做操作选择以下数字序号:"<<endl;cout<<"1:创建顺序表2:执行插入操作3:执行删除操作"<<endl;cout<<"4:执行输出操作5:执行查找操作6:执行排序操作"<<endl;cout<<"7:执行有序表的插入操作8:执行有序表的合并操作0:退出"<<endl;int n,i,x;cin>>n;switch (n){case 1:{Create_SeqList(L);break;}case 2:{cout<<"请输入插入位置:";cout<<endl<<"请输入插入元素值:";cin>>x;cout<<endl;m=Insert_SeqList(L,x,i);if (m==1)cout<<"插入操作成功!"<<endl;elseif (m==0)cout<<"插入位置不合法!"<<endl;elsecout<<"发生溢出!"<<endl;break;}case 3:{cout<<"请输入删除位置:";cin>>i;cout<<endl;m=Delete_SeqList(L,i);if (m==1)cout<<"删除操作成功!"<<endl;elseif (m==0)cout<<"删除位置不合法!"<<endl;elsecout<<"空表!"<<endl;break;}case 4:{Show_SeqList(L);break;}case 5:{cout<<"请输入所要查找的元素值:";cin>>x;cout<<endl;m=Locate_SeqList(L,x);if (m==0)cout<<"所查找元素不在顺序表中!"<<endl;elsecout<<"所查找元素是顺序表的第"<<m<<"个元素!"<<endl;}case 6:{Sort_SeqList(L);cout<<"排序操作完成!"<<endl;break;}case 7:{cout<<endl<<"请输入插入元素值:";cin>>x;cout<<endl;m=Insert_SeqList_sort(L,x);if (m==1)cout<<"插入操作成功!"<<endl;elsecout<<"发生溢出!"<<endl;break;}case 8:{SeqList L1,L2,L3;Init_SeqList(L1);Init_SeqList(L2);Init_SeqList(L3);cout<<"创建有序表1:"<<endl;Create_SeqList(L1);Sort_SeqList(L1);cout<<"创建有序表2:"<<endl;Create_SeqList(L2);Sort_SeqList(L2);cout<<"有序表1:"<<endl;Show_SeqList(L1);cout<<"有序表2:"<<endl;Show_SeqList(L2);Merge(L1,L2,L3);cout<<"合并后:"<<endl;Show_SeqList(L3);break;}case 0:return;}}}void Init_SeqList(SeqList &L)//创建空顺序表算法{=0;}void Show_SeqList(SeqList L)//顺序表输出算法{if==0)cout<<"空表!"<<endl;elsefor(int i=0;i<;i++)cout<<[i]<<" ";cout<<endl;}void Create_SeqList(SeqList &L)//顺序表创建算法{cout<<"请输入元素个数:";cin>>;cout<<"依次输入各个元素的值:"<<endl;for(int i=0;i<;i++)cin>>[i];}int Insert_SeqList(SeqList &L,DataType x,int i)//顺序表的插入算法{if(MAXSIZE<=return -1;if(i<1||i>+1)return 0;for(int j=;j>=i-1;j--)[j+1]=[j];[i-1]=x;++;return 1;}int Delete_SeqList(SeqList &L,int i)//顺序表的删除算法{if ==0)return -1;if(i<1||i>return 0;for(int j=i;j<;j++)[j-1]=[j];;return 1;}int Locate_SeqList(SeqList L,DataType x)//顺序表的按值查找算法{int i=0;while(i<&&[i]!=x)i++;if(i< )return i+1;elsereturn 0;}void Sort_SeqList(SeqList &L) //排序算法{int i,k,j;DataType temp;for(i=0;i<;i++){k=i;for(j=i+1;j<= -1;j++)if [j]< [k])k=j;if(i!=k){temp= [i];[i]= [k];[k]=temp;}}}int Insert_SeqList_sort(SeqList &L,DataType x)//有序表的插入算法{if(MAXSIZE<=return -1;int i=0;while(i<&&[i]<x)i++;for(int j=;j>=i;j--)[j+1]=[j];[i]=x;++;return 1;}void Merge(SeqList LA,SeqList LB,SeqList &LC)//两个有序顺序表的合并算法{int i,j,k;i=j=k=0;while(i<&&j<{if[i]<[j]){[k]=[i];i++;k++;}else{[k]=[j];j++;k++;}}while(i<{[k]=[i];i++;k++;}while(j<{[k]=[j];j++;k++;}=k;}输入输出结果:图1-1主菜单图1-2顺序表的创建和输出操作图1-3 顺序表的插入操作图1-4顺序表的删除操作图1-5顺序表的排序操作图1-6有序表的插入操作图1-7两个有序表的合并操作单链表的源程序:#include "iostream"using namespace std;typedef int DataType;typedef struct node{DataType data;struct node *next;}LNode,*LinkList;void Init_LinkList(LinkList &L);//创建空单链表void Create1LinkList(LinkList &L,int n);//前插入法创建单链表的算法void Create2LinkList(LinkList &L,int n);//后插入法创建单链表的算法void PrintLinkList(LinkList L);//单链表的输出算法int InsertLinkList(LinkList &L,int i,DataType x);//单链表的插入算法int DeleteLinkList(LinkList &L,int i);//单链表的删除算法void Select_Sort_LinkList(LinkList &L);//链表的排序算法(选择排序)void Insert2(LinkList L,DataType x);//有序表的插入void Merge(LinkList L1,LinkList L2,LinkList &L3);//两个有序表的合并算法void menu();//菜单函数int main(){menu();return 0;}void Init_LinkList(LinkList &L)//创建空单链表{L=new LNode;L->next=NULL;}void Create1LinkList(LinkList &L,int n)//前插入法创建单链表的算法{LNode *s;for(int i=1;i<=n;i++){s=new LNode;cout<<"请输入第"<<i<<"个元素的值:";cin>>s->data;s->next=L->next;L->next=s;}}void Create2LinkList(LinkList &L,int n)//后插入法创建单链表的算法{LNode *s,*r=L;for(int i=1;i<=n;i++){s=new LNode;cout<<"请输入第"<<i<<"个元素的值:";cin>>s->data;r->next=s;r=s;}r->next=NULL;}void PrintLinkList(LinkList L)//单链表的输出算法{if(L->next==NULL){cout<<"空表!"<<endl;return;}cout<<"当前单链表为:"<<endl;LNode *p=L->next;while(p){cout<<p->data<<" ";p=p->next;}cout<<endl;}int InsertLinkList(LinkList &L,int i,DataType x)//单链表的插入算法{int j=0;LNode *p=L,*s;while(p&&j<i-1){p=p->next;j++;}if(!p||j>i-1)return 0;s=new LNode;s->data=x;s->next =p->next ;p->next =s;return 1;}int DeleteLinkList(LinkList &L,int i)//单链表的删除算法{if(L->next ==NULL)return -1;int j=0;LNode *p=L,*q;while((p->next !=NULL)&&(j<i-1)){p=p->next ;j++;}if((p->next==NULL)||(j>i-1))return 0;q=p->next ;p->next =q->next ;delete q;return 1;}void Select_Sort_LinkList(LinkList &L)//链表的排序算法(选择排序){if(L->next ==NULL){cout<<"空表,不需要排序!"<<endl;return;}LNode *p,*q,*s;DataType temp;if(L->next==NULL) return;for(p=L->next;p->next!=NULL;p=p->next){s=p;for(q=p->next;q!=NULL;q=q->next){if(q->data<s->data)s=q;}if(s!=p){temp=s->data; s->data=p->data; p->data=temp;}}cout<<"排序成功!"<<endl;}void Insert2(LinkList L,DataType x)//有序表的插入{LNode *p=L,*s;while(p->next!=NULL&&p->next->data<x)p=p->next;s=new LNode;s->data=x;s->next=p->next;p->next=s;cout<<"插入操作成功!"<<endl;}void Merge(LinkList L1,LinkList L2,LinkList &L3)//两个有序表的合并算法{LNode *p1,*p2,*p3,*s;p1=L1->next ;p2=L2->next ;L3=p3=new LNode;L3->next =NULL;while(p1&&p2){s=new LNode;if(p1->data <p2->data ){s->data =p1->data ;p1=p1->next ;}else{s->data =p2->data ;p2=p2->next ;}p3->next =s;p3=s;}if(p1)p3->next =p1;if(p2)p3->next =p2;}void menu()//菜单函数{LinkList L;Init_LinkList(L);int m;while(1){cout<<"\n根据所做操作选择以下数字序号:"<<endl;cout<<"1:前插入创建单链表2:尾插入创建单链表3:执行插入操作"<<endl;cout<<"4:执行删除操作5:执行输出操作6:执行排序操作"<<endl;cout<<"7:执行有序表的插入操作8:执行有序表的合并操作0:退出"<<endl;int n,i,x;cin>>n;switch (n){case 1:{cout<<"请输入结点个数:";cin>>i;Create1LinkList(L,i);PrintLinkList(L);break;}case 2:{cout<<"请输入结点个数:";cin>>i;Create2LinkList(L,i);PrintLinkList(L);break;}case 3:{cout<<"请输入插入位置:";cin>>i;cout<<endl<<"请输入插入元素值:";cin>>x;cout<<endl;if (InsertLinkList(L,i,x)==1)cout<<"插入操作成功!"<<endl;elsecout<<"插入位置不合法!"<<endl;break;}case 4:{cout<<"请输入删除位置:";cin>>i;cout<<endl;m=DeleteLinkList(L,i);if (m==1)cout<<"删除操作成功!"<<endl;elseif(m==-1)cout<<"空表!"<<endl;elsecout<<"删除位置不合法!"<<endl;break;}case 5:{PrintLinkList(L);break;}case 6:{Select_Sort_LinkList(L);break;}case 7:{cout<<endl<<"请输入插入元素值:";cin>>x;cout<<endl;Insert2(L,x);break;}case 8:{LinkList L1,L2,L3;Init_LinkList(L1);Init_LinkList(L2);Init_LinkList(L3);cout<<"创建有序表1:"<<endl;cout<<"请输入结点个数:";cin>>i;Create2LinkList(L1,i);Select_Sort_LinkList(L1);cout<<"创建有序表2:"<<endl;cout<<"请输入结点个数:";cin>>i;Create2LinkList(L2,i);Select_Sort_LinkList(L2);cout<<"有序表1:"<<endl;PrintLinkList(L1);cout<<"有序表2:"<<endl;PrintLinkList(L2);Merge(L1,L2,L3);cout<<"合并后:"<<endl;PrintLinkList(L3);break;}case 0:return;}}}输入输出结果:图2-1主菜单图2-2创建单链表(用头插入法)图2-3创建单链表(用尾插入法)图2-4单链表的插入操作图2-5单链表的插入操作(插入位置不合法情况)图2-6单链表的删除操作图2-7单链表的删除操作(删除位置不合法情况)图2-8单链表的排序操作图2-9有序表的插入操作图2-10两个有序表的合并操作建议:代码较长,为了方便阅读和调试,可写成多文件结构!。

上机实验

上机实验

计算机软件技术基础上机调试实践项目【实验1】复习C语言及掌握VC++编译器的使用及调试【实验2】建立字母链表及一般链表并进行相关运算【实验3】顺序栈/链栈/链队列的实现及相关栈/队列运算【实验4】数组操作(元素地址计算,矩阵转置,矩阵乘积)【实验5】建树操作并前/中/后序遍历树【实验6】建立二叉排序树并进行排序操作【实验7】线性插入排序及冒泡排序算法的实现【实验8】快速排序算法的实现及中间排序过程显示【实验1】复习C语言及掌握VC++编译器的使用及调试实验内容1:掌握VC++编译器的使用及调试实验要求:学会使用Visual C++编译器步骤:①在程序中打开Microsoft Visual c++→文件→新建→工程→Win32 console application →填入工程名→选定“Hello world”→完成或在程序中打开Microsoft Visual c++→文件→新建→文件→c++source file→填入文件名→确定②在Main()主函数体内编辑源程序→完成后点击“!”运行要求:①体会头文件Stdio.h的作用;②养成好的编程习惯即编辑源程序时注意程序的层次结构;③注意在“英文小写”字体格式下编辑源程序④编译有问题时注意在源程序的第一行是否有“#include “stdafx.h””实验内容2:上机调试课件中C语言相关程序(3实例5练习)实验目的:深刻理解指针概念及其在函数调用中的传址应用。

实验要求:按实参到形参的传址要求画图说明。

在程序中设置断点,用watch窗口观察变量的变化过程。

调试实例:练习1:#include "stdio.h"void fun1(char *p){char *q;q=p;while(*q!='\0'){ (*q)++;q++; }}main(){ char a[]={"Program"},*p; p=&a[3];fun1(p);printf("%s\n",a);} 练习2:#include "stdio.h"#include "string.h"struct STU{ char name[10];int num;};void f(char *name, int num){ struct TU s[2]={{"SunDan",20044},{"Penghua",20045}};num = s[0].num;strcpy(name, s[0].name);}main(){ struct STU s[2]={{"Y angSan",20041},{"LiSiGuo",20042}},*p;p=&s[1];f(p->name, p->num);printf("%s %d\n", p->name, p->num);}练习3:#include "stdio.h"struct STU{ char name[10];int num;float TotalScore;};void f(struct STU *p){ struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}};struct STU *q=s;++p ;++q;*p=*q;}main(){ struct STU s[3]={{"Y angSan",20041,703},{"LiSiGuo",20042,580}}; f(s);printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].TotalScore);} 练习4:#include "stdio.h"void swap2(int *p1, int *p2) { int *temp;temp =p1;p1 = p2;p2 = temp; }void main( ){ int a=3, b=5,*pointer1,*pointer2; pointer1=&a;pointer2=&b;swap2(pointer1, pointer2); printf("%d, %d\n", *pointer1,*pointer2); }【实验2】建立字母链表及一般链表并进行相关运算实验内容1:用C 语言编程,先建立26个字母的字母链表并输出,然后删除第i 个位置上的元素 实验目的: 掌握链表的建表操作及插入、删除结点运算 实验要求: 补充完整删除结点函数 调试实例:实验内容2:一般链表的建立并进行链表的运算操作 实验目的: 掌握链表的建表操作及插入、删除结点运算 实验要求: 思考插入及删除结点操作函数中双指针的使用意义 调试实例:【实验3】顺序栈/链栈/链队列的实现及相关栈/队列运算实验内容 : 顺序栈/链栈/链队列的实现及入栈/入队列、出栈/出队列操作练习5:#include "stdio.h" struct STU { int num; float TotalScore; };void f(struct STU p) { struct STU s[2]={{20044,550},{20045,537}}; p.num = s[1].num;p.TotalScore = s[1].TotalScore;}main() { struct STU s[2]={{20041,703},{20042,580}}; f(s[0]);printf("%d %3.0f\n", s[0].num, s[0].TotalScore); }练习6:main(int argc, char* argv[]) { int a[10]={0}; int *p,i;for(i=0; i<10; i++)scanf("%d",&a[i]);printf("\n");printf("数组下标表示方法1为:\n"); for(i=0; i<10; i++) printf("%d ",a[i]);printf("\n");printf("数组下标表示方法2为:\n"); p=a; //或者是用数组p[i]下标法 for(i=0; i<10; i++) printf("%d ",p[i]); printf("\n");printf("数组名表示为:\n"); for(i=0; i<10; i++)printf("%d ",*(a+i)); printf("\n"); printf("使用指针变量表示方法1为:\n"); for(p=a; p<(a+10); p++)printf("%d ",*p);printf("\n");printf("使用指针变量表示方法2为:\n"); p=a;for(i=0; i<10; i++)printf("%d ",*p++);}实验目的:掌握栈/队列的运算规则及其代码实现实验要求:补充完整相关栈/队列运算程序调试实例:实例1:顺序栈操作#include "stdio.h"#define MAXN 26int stack[MAXN];int top=0;int push(int x){if (top >= MAXN)//上溢return(1);?????????????; //请大家填写入栈语句return(0);}int pop(int *p_y){ if (top == 0)//下溢return(1);???????????????; //请大家填写出栈语句return(0);}int main(int argc, char* argv[]){ int data_x,data_y;printf("input the value you want to push\ndata_x=");//入栈操作scanf("%d",&data_x);while(data_x!=0){ if (push(data_x)==1)printf("failure!\n");else{ printf("success!\n");printf("input a value for data_x to push\ndata_x=");scanf("%d",&data_x);}}int i=0;//打印输出while(stack[i]!=0){ printf("%d ", stack[i]);i++;}printf("\n");while (pop(&data_y)==0)printf("%d\n",data_y);return 0;}实例2:链栈操作#include "stdio.h"#include "stdlib.h" //malloc函数的头文件typedef struct node{ int data;struct node *next;}NODE;NODE * top = NULL;void push(int x){ NODE *p;p = (NODE * )malloc(sizeof(NODE));p->data = x;p->next = top; //若插入首元素,则其next域为NULL ??????????????; //修改栈顶指针,请大家补充完整}int pop(int *p_y){ NODE *p;if (top == NULL)return(1);* p_y = top->data;p = top;?????????????; //修改栈顶指针,请大家补充完整free(p);return(0);}int main(int argc, char* argv[]){ NODE *p;int stack_x,stack_y;printf("input the value you want to push\n");scanf("%d",&stack_x);while(stack_x!=0)//逐一入栈{ push(stack_x);scanf("%d",&stack_x);}//打印输出p=top;while(p!=NULL){ printf("%d ",p->data);p=p->next;}printf("\n");while (pop(&stack_y)==0) //全部出栈printf("%d\n",stack_y);return 0;}实例3:链队列操作#include "stdio.h"#include "stdlib.h"typedef struct node{ int data;struct node * next;} NODE;NODE *front=NULL;NODE *tail=NULL;void en_queue(int x) //在队尾入队操作{ NODE *p;p = (NODE *)malloc(sizeof(NODE));p->data = x;p->next = NULL;if (front == NULL)front = p;else?????????????; //请大家填写入队列操作语句tail = p;}int de_queue(int *p_y) //在队首出队操作{ NODE *p;if (front == NULL)return(1);*p_y = front->data;p = front;?????????????; //请大家填写出队列操作语句free(p);return(0);}int main(int argc, int* argv[]){ NODE *p;int into_x,out_y;printf("input the value you want to enqueue\n");scanf("%d",&into_x);while(into_x!=0) //逐一入队列{en_queue(into_x);scanf("%d",&into_x);}p=front;//打印队列while(p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");while (de_queue(&out_y)==0) //全部出队列printf("%d\n",out_y);return 0;}【实验4】数组操作(元素地址计算,矩阵转置,矩阵乘积)实验内容:定义两个二维数组,显示其中一个数组中每个元素的存储地址,并与计算结果进行对比。

数据结构上机实验

数据结构上机实验

数据结构上机实验本课程实验中已知的预定义常量和类型如下:#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status;实验一顺序表(一)一、 实验目的掌握顺序表的定义、存储结构及其基本操作。

二、 实验内容已知:线性表的动态分配顺序存储结构为#define LIST_INIT_SIZE 100#define LISTINCREMENT 10typedef struct{int *elem;int length;int listsize;}SqList;在主程序中调用如下函数实现构造线性表,在线性表中插入数值,最后输出线性表。

1. 编写函数,Status InitList(SqList *L) 实现构造一个空的线性表,若构造成功则返回OK,否则返回ERROR。

2. 编写函数,Status ListInsert(SqList *L , int i , int e) 实现在线性表L中第i个位置之前插入新的数据元素e,L的长度加1。

若插入成功返回OK,否则返回ERROR。

(提示:i的合法值为:i>=1&&i<=L—>length+1)3. 编写函数,void ListPrint(SqList *L)实现将线性表中的元素依次输出到屏幕上。

4.编写函数,int Menu(),输出菜单项请选择你要进行的操作(请输入1-4中的任一个数字):输入1:InitList2:ListInsert3:ListPrint4:Exit实验二顺序表(二)一、 实验目的掌握顺序表的定义、存储结构及其基本操作。

二、 实验内容在实验一的基础上,继续完成如下实验内容。

1.编写函数,Status ListDelete(Splist *L ,int i ,int *e),实现删除L的第i个数据元素,并用e返回其值,L的长度减1。

上机实验内容及实验报告要求正式版

上机实验内容及实验报告要求正式版

For the things that have been done in a certain period, the general inspection of the system is also a specific general analysis to find out the shortcomings and deficiencies 上机实验内容及实验报告要求正式版上机实验内容及实验报告要求正式版下载提示:此报告资料适用于某一时期已经做过的事情,进行一次全面系统的总检查、总评价,同时也是一次具体的总分析、总研究,找出成绩、缺点和不足,并找出可提升点和教训记录成文,为以后遇到同类事项提供借鉴的经验。

文档可以直接使用,也可根据实际需要修订后使用。

上机实验内容及实验报告要求一、《软件技术基础》上机实验内容1.顺序表的建立、插入、删除。

2.带头结点的单链表的建立(用尾插法)、插入、删除。

二、提交到个人10M硬盘空间的内容及截止时间1.分别建立二个文件夹,取名为顺序表和单链表。

2.在这二个文件夹中,分别存放上述二个实验的相关文件。

每个文件夹中应有三个文件(.C文件、.OBJ文件和.EXE文件)。

3.截止时间:12月28日(18周周日)晚上关机时为止,届时服务器将关闭。

三、实验报告要求及上交时间(用A4纸打印)1.格式:《计算机软件技术基础》上机实验报告用户名se××××学号姓名学院①实验名称:②实验目的:③算法描述(可用文字描述,也可用流程图):④源代码:(.C的文件)⑤用户屏幕(即程序运行时出现在机器上的画面):2.对C文件的要求:程序应具有以下特点:A 可读性:有注释。

B 交互性:有输入提示。

C 结构化程序设计风格:分层缩进、隔行书写。

3.上交时间:12月26日下午1点-6点,工程设计中心三楼教学组。

请注意:过时不候哟!四、实验报告内容0.顺序表的插入。

第十章 上机实验内容

第十章 上机实验内容

第十章 上机实验内容 3. 实验内容 已知repeat语句与while语句的功能结构图如图10-1 所示。
第十章 上机实验内容
S F T
B
F
B T repeat S until B:
S while B do S
图10-1 条件循环语句结构图
第十章 上机实验内容 通过等价变换用while语句实现repeat语句的格式如 下: S; while NOT B do S; 试在编译程序中用等效的while语句实现repeat语句 的功能。
第十章 上机实验内容 4. 说明 可采用预处理方法先将源程序中repeat语句用等效 的while语句替换,但这种替换在嵌套语句中处理起来 比较麻烦。
1. 实验目的 了解编译程序中LR分析表的作用以及语义加工程序 的功能。 2. 实验要求 通过编译程序PAS和COMPILER的运行,检验编译程 序输出结果的正确性。
第十章 上机实验内容 3. 实验内容 (1) 验证下述程序输出结果的正确性: begin i:=1; while i<=N do begin i:=i+1; if B=1 then
第十章 上机实验内容 F2→F1 step E(2) {F2.QUAD:=F1.QUAD; F2.PLACE:=F1.PLACE; GEN(+,F1.PLACE,E(2).PLACE,F1.PLACE); BACKPATCH(F1.CHAIN,NXQ)} F3→F2 until E(3) {F3.QUAD:=F2.QUAD; q:=NXQ; GEN(j≤,F2.PLACE,E(3).PLACE,q+2); F3.CHAIN:=NXQ; GEN(j,_,_,0)}
第十章 上机实验内容 (2) for语句中产生式的语义动作需要参考编译程 序中对if和while语句的处理部分做相应修改。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1. 上机实验内容顺序表部分第1题主函数参考
/*******************************************
线性表的顺序存储:作业1
********************************************/
#include<iostream.h>
#include<stdlib.h>
typedef int ElemType;
struct List {
ElemType *list;
int size;
int MaxSize;
};
#include"XXX.h"
void main()
{
const int aArrSize=6;
ElemType a[aArrSize]={3,6,9,12,15,18};
int i;
List t;
int n;
InitList(t);
for(i=0;i<aArrSize;i++)
InsertRear (t,a[i]);
cout<<"表的输出"<<endl;
TraverseList(t);
n=4;
cout<<"第"<<n<<"个元素的值为"<<GetList(t,n)<<endl;
n=2;
cout<<"第"<<n<<"个元素的值为"<<GetList(t,n)<<endl;
2. InsertRear函数参考(在文件"XXX.h"中)
/*******************************************
函数名: InsertRear
功能:向一个表的尾部置数
形参:L- 顺序表,item-所赋的值
输出:bool,赋值成功-true,未成功-false;
********************************************/
bool InsertRear(List &L,ElemType item)
{
//表满的处理
if(L.size==L.MaxSize) {
cout<<"表满!不能插入"<<endl;
return false;
}
L.list[L.size]=item;
L.size++;
return true;
}。

相关文档
最新文档