精华内容
下载资源
问答
  • 数据结构实训报告

    2019-05-18 16:20:00
    ①定义顺序串A,结构体内包含两个成员,存储数据的数组和字符串的长度。 ②给这个顺序串赋值。 ③再定义令外一个顺序串B,将A串的内容复制到B串。 ④ 求A串与B串的长度。 ⑤ 判断A串与B串是否相等, 如果A...

    预习要点:

    ① 串赋值Assign(s,t):将一个值赋给串s。
    ② 销毁串DestroyStr(s):释放串s占用的内存空间。
    ③ 串复制StrCopy(s,t):将一个串t赋给串s。
    ④ 求串长StrLength(s):返回串s的长度。
    ⑤ 判断串相等StrEqual(s,t):两个串s和t相等时返回1;否则返回0。
    ⑥ 串连接Concat(s,t):返回串s和串t连接的结果。
    ⑦ 求子串SubStr (s,i,j):返回串s的第i个位置开始的j个字符组成的串。
    ⑧ 查找定位位置Index(s,t):返回子串t在主串s中的位置。
    ⑨ 子串插入InsStr(s,i,t):将子串t插入到串s的第i个位置。
    ⑩ 子串删除DelStr(s,i,j):删除串s中从第i个位置开始的j个字符。
    ⑪ 子串替换RepStrAll(s,s1,s2):将串s中所有出现的子串s1均替换成s2。
    ⑫ 输出串DispStr(s):显示串s的所有字符。
    实验(训)仪器、软件、设备和器材:
    ① 计算机DELL
    ② Dev-C++
    实验(训)内容 :
    ①定义顺序串A,结构体内包含两个成员,存储数据的数组和字符串的长度。
    ②给这个顺序串赋值。
    ③再定义令外一个顺序串B,将A串的内容复制到B串。
    ④ 求A串与B串的长度。
    ⑤ 判断A串与B串是否相等,
    如果A串>B串,返回1;
    如果A串<B串,返回1;
    如果A串=B串,返回0.
    ⑥ 将B串接在A串后面,返回C串。。
    ⑦ 求A串中的子串SubStr (A,i,j):返回串A的第i个位置开始的j个字符组成的串。
    ⑧ 模式匹配------查找定位位置Index(A,t):
    返回子串t在主串A中的位置。
    ⑨ 输出串DispStr(A):显示串A的所有字符。
    //
    //  main.cpp
    //  字符串上机
    //
    //  Created by 孙贤超 on 2019/5/18.
    //  Copyright © 2019 孙贤超. All rights reserved.
    //
    #include<stdio.h>
    #define maxsize 100
    typedef struct{
        char ch[maxsize];
        int n;
    }SeqString;
    
    void Assign(SeqString &L,char ch1[]);
    void DisqStr(SeqString &L);
    int  concat(SeqString &L,char ch2[]);
    void Strlength(SeqString &L);
    void StrEqual(SeqString &L,char ch2[],int i);
    void Index (SeqString &L,char ch3[]);
    void InsStr(SeqString &L,int n,int m);
    
    int main(){
        int i,m,n;
        char ch1[100],ch2[5]="efgh",ch3[4]="efg";
        SeqString L;
        printf("请输入一个字符串:\n");
        gets(ch1);
        Assign(L,ch1);
        DisqStr(L);
        Strlength(L);
        StrEqual(L,ch2,i);
        i=concat(L,ch2);
        printf("请问要查找第几个位置开始的几个字符:\n");
        scanf("%d %d",&n,&m);
        InsStr(L,n,m);
        Index(L,ch3);
        DisqStr(L);
    }
    
    void Assign(SeqString &L,char ch1[]){           //  数组赋值给字符串
        int i=0;
        while(ch1[i]!='\0'){
            L.ch[i]=ch1[i];
            i++;
        }
        L.n=i;
    }
    
    void DisqStr(SeqString &L){                     //  输出串
        printf("L.ch的字符串为:");
        for(int i=0;i<L.n;i++){
            printf("%c",L.ch[i]);
        }
        printf("\n");
    }
    
    int  concat(SeqString &L,char ch2[]){            //串连接
        int i=0,j,m;
        m=L.n;
        while(ch2[i]!='\0'){
            i++;
            m++;
        }
        for(j=0;j<i;j++){
            L.ch[j+L.n]=ch2[j];
        }
        printf("将串ch2连接到L.ch后面,得到的新的字符串为:\n%s\n",L.ch);
        L.n=m;
        return i;
    }
    
    void Strlength(SeqString &L){                    //求串长
        printf("字符串L.ch的长度为:%d\n",L.n);
    }
    
    void StrEqual(SeqString &L,char ch2[],int i){          //判断串相等
        int k=0,a;
        a=L.n>=i?L.n:i;
        printf("判断L.ch和ch2的字符串是否相等!\n结果为:");
        for(int j=0;j<a;j++){
            if(L.ch[j]==ch2[j]){
                k++;
            }else if(L.ch[j]>ch2[j]){
                printf("1\n");
                break;
            }else {
                printf("-1\n");
                break;
            }
        }
        if(k==a){
            printf("0\n");
        }
    }
    
    void Index (SeqString &L,char ch3[]){
        int n=0,i,j,k;
        while(ch3[n]!='\0'){
            n++ ;
        }
        for(i=0;i<L.n-n;i++){
            for(j=0,k=i;j<n;j++,k++){
                if(ch3[j]!=L.ch[k]){
                    break;
                } }
            if(j==n){
                printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置\n",i+1,i+n);
            }
        }
        return;
    }
    
    void InsStr(SeqString &L,int n,int m){           //串的查找
        int i;
        printf("L.ch字符串第%d个位置开始的%d个字符为:\n",n,m);
        for(i=n-1;i<n+m-1;i++){
            printf("%c",L.ch[i]);
        }
        printf("\n");
    }

     

    转载于:https://www.cnblogs.com/sxcxfl/p/10886131.html

    展开全文
  • 数据结构实训报告 查找 希尔排序 图的存储与遍历等等等等等
  • 数据结构实训报告,提供一个木板,希望对大家有用吧!!!
  • 数据结构实训报告.rar

    2008-11-03 19:28:38
    内含程序代码,以及图例,需要的人,请快来下了!
  • 数据结构实训报告 题目 用C实现外部流文件的引用 课程设计题目: 有订单文件如下 货号 品名 进口 单价 数 量 开单日期 生产单位 LX-750 影碟机 TRUE 5900.00 4 1996-8-10 松下电器公司 YU-120 彩电 FALSE 6700.00 4 ...
  • 实验要求 1.1 掌握数据结构中线性表的基本概念 1.2 熟练掌握线性表的基本操作创建插入删除查找输出求长度 及合并并运算在顺序存储结构上的实验 1.3 熟练掌握链表的各种操作和应用 2. 实验内容 2.1 编写一个函数从一...
  • 数据结构实训范文数据结构实习报告 数据结构实习报告规范 实习报告的开头应给出题目班级姓名学号和完成日期并包括以下七个内容 1需求分析 以无歧义的陈述说明程序设计的任务强调的是程序要做什么明确规定 1输入的...
  • 大二数据结构实训报告,包含采花生问题、舞会匹配问题、会议安排问题、全排列问题、背包装载问题。

    采花生问题

    1.1 需求分析
    1.1.1 题目概要
    给一矩阵,按贪心思路最多能采多少花生并在规定时间内返回。
    1.1.2 题目要求
    给定一块花生田的大小和花生的分布,在限定时间内,小Q最多可以采到多少个花生?只有部分植株下面长有花生,假设这些植株下的花生个数各不相同。
    1.1.3 输入/输出格式
    (1)输入:输入数据存放在peanut.txt文件中。
    第1行数字表示矩阵的行数(M),列数(N),所给定的单位时间(K)
    第2行至第M+1行,数字表示的是每个花田下面花生数值(value)
    (2)输出
    第一行输出的是矩阵的行数(M),列数(N),所要求的单位时间(K)
    接下来输出M行,每1行数字表示的是每个花田下面花生数值(value)
    最后一行输出的是最多采到了的花生数目(num)
    1.2 概要设计
    1.2.1 数据结构
    使用结构体数组来存储有花生的格子的地址和数值:

    typedef struct Node
    {
        int x;//列数
        int y;//行数
        int num;//花生数值
    }Peanut;
    

    1.2.2 算法描述
    ① 从文件的第一行读取行、列、单位时间的要求
    ② 从文件中第2行到最后一行读取数组的数字,如果不为0就存入P数组中
    ③ 设置qsort函数,排序数组,能够使得数组降序排序
    ④ 设置O结构体初始数值,s0记录两个数值之间的距离和采摘的单位时间,s1记录回去的时间
    ⑤ 从P数组第一个开始计算,如果s0+s1小于要求的单位时间,单位时间减少,O结构体变成可满足的序列
    ⑥ 循环往复,到s0+s1大于要求的单位时间,循环结束,输出采摘的最多的花生。
    1.3 详细设计
    1.3.1 函数功能
    (1)int cmp(const void *a, const void *b);函数功能:cmp是qsort的回调函数,用于比较使用,使得qsort是降序排序。
    (2)qsort(P, lenP, sizeof(Peanut), cmp);函数功能,使得输入的数组P,在指定长度(lenP)中,以降序的方式进行排序。

    舞会配对问题

    2.1 需求分析
    2.1.1 题目概要
    在化妆舞会上,男士们和女士们各自排成一队从不同的方向进入舞池。跳舞开始时,依次从男队和女队的队头上各出一人配成舞伴。若两队初始人数不相同,则较长的那一队中未配对者等待下一轮舞曲。
    2.1.2 题目要求
    (1)依次从男队和女队的队头上各出一人配成舞伴,显示前三轮配对的男士和女士。
    (2)测试数据存放在txt文件中。
    2.1.3 输入/输出格式
    (1)输入:输入数据存放在dancerA.txt文件中。
    第1行数字n表示有n个人参加舞会。
    第2行至第n+1行,分别表示这n个人的姓名和性别,M表示男士,F表示女士。
    (2)输出
    第一行输出“第1轮舞伴是:”。
    接下来输出N行,每1行输出对应的舞伴即女士和男士姓名,姓名都左对齐,女士和男士姓名中间空出若干空格。
    依次输出第2轮和第3轮舞伴。
    2.2 概要设计
    2.2.1 数据结构
    使用结构体数组来存放参加舞会人员的姓名和性别:

    typedef struct
    {  char name[20];  //存放姓名,假设每位人员的姓名长度不超过20个字符
    char sex;      //sex字符变量存放性别,M表示男士,F表示女士
    }Person;
    

    使用到的数据结构队列CirQueue定义如下:

    typedef struct
    {  
    int count;          /* 计数器,记录队中元素总数 */
    Person dancer[N];
    }CirQueue;
    

    定义队列变量Fdancers,用来存放女士信息;队列变量Mdancers用来存放男士信息。
    2.2.2 算法描述
    ① 初始化总队列cirQueue,从文本文件中读取数据到数组dancer中,读取不成功程序结束。
    ② 初始化男女队列,遍历cirQueue判断男女性别并且分别放入Mdancer、Fdancer队列中
    ③ 判断男女队列中的最短长度(length),,设置初始计数count进入循环舞伴匹配
    ④ 每一轮循环中,count数加一,男女队列分别使用count对自己长度进行取余得出每次跳舞的姓名。
    ⑤ 输出每一轮跳舞的姓名,当count%length为0的时候,一轮跳舞结束
    ⑥ 结束程序
    2.3 详细设计
    2.3.1 函数功能
    (1)void inputdata(CirQueue *cQ)函数功能:从文本文件中读取数据到数组dancer中,读取不成功程序结束。
    (2)void AddPerson(CirQueue *cQ,CirQueue *mQ,CirQueue *fQ)函数功能:把全部数据进行分组,分为男队列和女队列。
    (3)void match(CirQueue mQ,CirQueue fQ,int times)函数功能:进行舞伴匹配,得到相应的结果并且输出。
    (4)void DancePartners(CirQueue *Q,int times)函数功能:初始化男女数组,从dancer数组中读取舞会人员进行配对输出。

    会议安排问题

    3.1 需求分析
    3.1.1 题目概要
    某公司的会议日益增多,以至于全公司唯一的会议室不够用了。现在给出这段时期的会议时间表,要求适当删除一些会议,使得剩余的会议在时间上互不冲突,要求删除的会议最少。
    3.1.2 题目要求
    (1)输入公司会议的个数、开始时间和结束时间,适当删除一些会议,使得剩余的会议在时间上不冲突且删除的会议最少。
    (2)测试数据存放在txt文件中。
    3.1.3 输入/输出格式
    (1)输入:输入数据存放在meetA.txt文件中。
    第1行数字表示有number个会议。
    第2行至第number+1行,分别表示这会议的起始时间和结束时间。
    (2)输出
    第一行输出“会议安排如下:”。
    接下来输出answernumber行,每1行输出对应会议的起始时间和结束时间。
    最后一行为取消会议个数。
    3.2 概要设计
    3.2.1 数据结构
    使用结构体数组来存放参加舞会人员的姓名和性别:

    typedef struct{
    	int start;  //存放开始时间
    	int end;      //结束时间
    	int decide;     //是否安排上
    }Time;
    

    3.2.2 算法描述
    ① 设置data数组存放内容数据。从meetA.txt读取所需要的会议个数number,和各个会议的起始时间和结束时间,把读取的内容存放到data数组中。
    ② 使用快速排序算法qsort对data数组按照结束时间升序排序。
    ③ 设置answer数组存放可以进行的会议。遍历data数组,对每个数组进行初始化,使得data数组中的decide都为0。
    ④ 循环遍历data数组,对data数组中的数值进行比较,当前开始时间比前面的结束时间晚或者就算早但是前面的没有被安排,则设置当前下标的decide为1。
    ⑤ 循环内,判断当前下标的decide是否为1,为1的时候加入answer数组。
    ⑥ 循环结束后,输出answer数组,即为安排的会议。
    3.3 详细设计
    3.3.1 函数功能
    (1)void inputdata(Time *data,int *number)函数功能:从文本文件中读取数据到数组data中,读取不成功程序结束。
    (2)void printTest(Time *answer,int number,int answernumber)函数功能:打印出结果的会议内容和取消会议的个数。
    (3)int Arrange(Time *data,Time *answer,int number)函数功能:实现求出安排的会议,返回能有安排的会议个数。
    (4)void ArrangeMeeting(Time *data,Time *answer,int number)函数功能:求出会议的安排结果并且输出结果。

    全排列问题

    4.1 需求分析
    4.1.1 题目概要
    以字符串的形式输入要全排列的字符输出1,2,3,4四个数的所有排列方法及排列总数。拓展:输出n(n<=10)个不同的字符的所有排列方法及排列总数。
    4.1.2 题目要求
    (1)输入要全排列的字符串。
    (2)字符要求不相同且字符串长度小于10。
    4.1.3 输入/输出格式
    (1)输入:
    输入要全排列的字符串。
    (2)输出
    输出全排列的字符串,以六个字符串为一行排列出来
    最后一行是全排列的个数。
    4.2 概要设计
    4.2.1 数据结构
    char string[]
    4.2.2 算法描述
    ① 输入字符串,设置total统计方案数
    ② 定义solve函数,left是排列到第几位的坐标,right是数组的长度。
    ③ solve先进行left与right判断,如果相同则输出全排列的一种排列方式。
    ④ solve再进行for循环,交换string[i] 和 string[left] 的位置。
    ⑤ 在for循环中调用solve函数,但left往后移动一位。
    ⑥ 将一个有序序列全排列后,恢复原状,防止出现重复的结果。
    ⑦ 输出函数结果,结束程序
    4.3 详细设计
    4.3.1 函数功能
    (1)solve(char string[],int left,int right,int *total)函数功能:递归函数,能够实现分治求全排列数组。
    (2)void swap(char *i,char *j)函数功能:交换char类型的i j字符串的位置

    背包装载问题

    5.1 需求分析
    5.1.1 题目概要
    两只背包载重量分别为c1和c2,现有n本书要装入包中,每本书的重量用wi表示,并且满足∑wic1+c2,试找出合理的方法,将这n本书装入背包中。。
    5.1.2 题目要求
    (1)输入要全排列的字符串。
    (2)字符要求不相同且字符串长度小于10。
    (3)采用回溯法解决问题
    5.1.3 输入/输出格式
    (1)输入:
    第一行输入bag0,bag1表示两个背包的装载量
    第二行输入number表示书的重量
    第三行输入book[i]表示number本书分别的重量。
    (2)输出
    第一行先输出book,后面为number本书的重量
    第二行输入c1,后面为是否装入bag0,装入输出1,未装入输出0.
    第二行输入c2,后面为是否装入bag1,装入输出1,未装入输出0.
    若无解,输出Unsolvable
    5.2 概要设计
    5.2.1 数据结构

    typedef struct{
        int c1;//记录背包一的实际装载容量
        int c1num;//记录背包一中书本的实际数量
        int flag[N];
    }answer;
    

    5.2.2 算法描述
    ① 输入背包容量bag0,bag1,输入书的数量和书的重量。
    ② 定义remain记录未装入书包的重量,初始化answer结构体用于放置结果。
    ③ 假设第i本书放入背包一中,remain减去此书的重量,若此书超载,进入④,否则更新背包一的装载重量,并进入递归③放入下一本书。
    ④ 如果剩余数量和背包一装载重量大于当前结构体的背包一装载重量,若超载则结束本轮递归,否则进入递归放入下一本书,进入③,remain加回第i本书的重量。
    ⑤ 递归过程中若放完了全部书本表示已经成功,否则不成功。
    ⑥ 把递归的结果传送给结构体answer,对比递归结果的背包一装入情况,在背包一装的最满的情况下,寻找到背包一书装的最少的情况。
    ⑦输出放书结果,结束程序。
    5.3 详细设计
    5.3.1 函数功能
    (1)void solve(int cur,int c1num)函数功能:递归函数,记录放入书本的重量和背包一中放入书本的数量。
    (2)void bagProblem()函数功能:去找到合理的方法来放置。若有合理的方法则输出合理的方法,没有则输出Unsolvable。

    展开全文
  • 试验一 线性表 试验要求 掌握数据结构中线性表基础概念 熟练掌握线性表基础操作创建插入删除查找输出求长度及合并并运算在次序存放结构上试验 熟练掌握链表多种操作和应用 试验内容 编写一个函数从一个给定次序表A中...
  • 课 程 设 计 任 务 书 课题名称: 《队列的...2.加深对队列结构的理解,逐步培养解决实际问题的编程能 3.掌握环形队列的进队和出队等基本操作 指导教师(签名): 教研室主任(签名): 开题日期: 2019 年 12 月...

    课 程 设 计 任 务 书

    课题名称: 《队列的基本操作》

    设计内容:
    1.环形队列的基本操作,主程序
    2.招聘程序

    技术条件或要求:
    1.技术条件:开发环境visua c++
    2.加深对队列结构的理解,逐步培养解决实际问题的编程能
    3.掌握环形队列的进队和出队等基本操作

    指导教师(签名): 教研室主任(签名):

    开题日期: 2019 年 12 月 2 日 完成日期: 2019 年 12 月 6 日
    目录
    第一章 环形队列的基本操作函数 3
    1、1代码实现 3
    1、2运行结果 5
    1、3分程序N-S图 5
    第二章 招聘程序 9
    2、1代码实现 9
    2、2运行结果 12
    2、3分程序N-S图 13
    2、4实训总结 20

    第一章环形队列的基本操作函数
    1、1代码实现
    #include<stdio.h>
    #include<malloc.h>
    #define MAXN 11 /定义环形顺序排列的存储长度/
    int EnQueue(int *queue,int maxn,int *head,int *tail,int x){/进队操作,返回;队满/
    if((*tail+1)%maxn==*head)/队尾指针赶上队首指针,队满/
    return 1;
    *tail=(*tail+1)%maxn;/对手指针+1/
    queue[*tail]=x;/元素入队尾/
    return 0;
    }
    int DeQueue(int *queue,int maxn,int *head,int *tail,int cp)//出队操作 返回 1:队空/
    {
    if(*head==*tail)/队首=队尾,表明队列为空/
    return 1;
    *head=(*head+1)%maxn;/队首指针+1/
    *cp=queue[*head];/取出队首元素/
    return 0;
    }
    void OutputQueue(int *queue,int maxn,int h,int t){ /输出队列中元素/
    while(h!=t){
    h=(h+1)%maxn;
    printf("%d",queue[h]);
    }
    printf("\n");
    }
    void main(){
    int q[MAXN];/假设环形队列的元素类型为int/
    int q_h=0,q_t=0;/初始化队首,队首指针为0/
    int op,i;

    	while(1){
    		printf("请选择操作, 1:进队   2:出队   0:退出");
    		fflush(stdin);/*清空标准输入缓冲区*/
    		scanf("%d",&op);
    		switch(op){
    			case 0:/*退出*/
    			return;
    			case 1:  /*进队*/
    			printf("请输入进队元素:");
    			scanf("%d",&i);
    			if(EnQueue(q,MAXN,&q_h,&q_t,i)!=0)
    				printf("队列满\n");
    			else{
    				printf("入队成功,对内元素为:\n");
    				OutputQueue(q,MAXN,q_h,q_t);
    			}
    			break;
    			case 2:/*出队*/
    			if(DeQueue(q,MAXN,&q_h,&q_t,&i)==0){/*出队成功*/
    				printf("出队元素为:[%d],队内元素为:\n",i);
    				OutputQueue(q,MAXN,q_h,q_t);
    			}
    			else
    				printf("队空\n");
    		break;
    		}
    	}
    }
    

    1、2运行结果

    1、3分程序N-S图
    int *head 进队元素头指针
    int *tail 进队元素尾指针
    int x队尾长度
    int EnQueue(int *queue,int maxn,int *head,int *tail,int x){/进队操作,返回;队满/

    出队操作函数模块
    函数模型
    int DeQueue(int *queue,int maxn,int *head,int *tail,int *cp);
    函数说明(出队操作 返回 1:队空):
    int *queue 出队元素队列
    int maxn 环形顺序队列存储长度
    int *head 头指针
    int *tail 尾指针
    int *cp 队首元素

    输出队列元素模块
    函数模型
    void OutputQueue(int *queue,int maxn,int h,int t);
    函数说明(输出队列中元素):
    int *queue 出队元素队列
    int maxn 环形顺序队列存储长度
    int h 输出元素头
    int t 输出元素尾

    出队操作函数模块
    函数模型
    int EnQueue(int *queue,int maxn,int *head,int *tail,int x);
    函数说明(出队操作 返回 1:队空):
    int *queue 出队元素队列
    int maxn 环形顺序队列存储长度
    int *head 头指针
    int *tail 尾指针
    int *cp 队首元素
    int *queue 出队元素队列
    int maxn 环形顺序队列存储长度

    void main()主程序

    第二章招聘程序
    2、1代码实现
    #include<malloc.h>
    #define DEMARK 5
    typedef struct stu{
    int no,total,z[2],sortm,zi;
    struct stu *next;
    }STU;
    typedef struct job{
    int lmt,count;
    STU *stu;
    }JOB;
    STU *head=NULL,*over=NULL;
    int all;
    void OutPutStu(STU *p){
    for(;p!=NULL;p=p->next)
    printf("%d(%d)\t",p->no,p->total);
    }
    void FreeStu(STU **p){
    STU *q;
    while(*p!=NULL){
    q=*p;
    *p=(*p)->next;
    free(q);
    }
    }
    int random(int n){
    int rn=0;
    rn=rand()%n;
    return rn;
    }
    void Insert(STU **p,STU *u){
    STU *v,*q;
    for(q=*p;q!=NULL;v=q,q=q->next)
    if(q->sortmsortm)
    break;
    if(q==*p)
    *p=u;
    else
    v->next=u;
    u->next=q;
    }
    int InitJob(JOB **h,int n,int *all){
    int i;
    JOB p;
    all=0;
    printf(“工种信息{工种号(计划招聘人数)}\n”);
    if((p=(JOB
    )malloc(n
    sizeof(JOB)))NULL){
    printf(“内存申请错误!\n”);
    return -1;
    }
    for(i=0;i<n;i++){
    p[i].lmt=random(10)+1;
    p[i].count=0;
    p[i].stu=NULL;
    *all+=p[i].lmt;
    printf("%d(%d)\t",i,p[i].lmt);
    }
    printf("\n 总招聘人数[%d]\n",*all);
    *h=p;
    return 0;
    }
    int InitStu(STU **h,int n,int m){
    STU p;
    int i;
    printf(“应聘人员信息{编号,成绩,志愿1,志愿2}\n”);
    for(i=0;i<n;i++){
    if((p=(STU
    )malloc(sizeof(STU)))NULL){
    printf(“内存申请错误!\n”);
    return -1;
    }
    p->no=i;
    p->total=p->sortm=random(201);
    p->z[0]=random(m);
    p->z[1]=random(m);
    p->zi=0;
    printf("%d,%3d,%d%d\t",i,p->total,p->z[0],p->z[1]);
    Insert(h,p);
    }
    printf("\n");
    return 0;
    }
    void main(){
    int m;
    int n;
    JOB *rz;
    int all;
    STU *head=NULL,*over=NULL;
    STU *p;
    int i;
    while (1){
    m=n=0;
    printf(“请输入工种总数(1~20),=0:退出”);
    scanf("%d",&m);
    if(m
    0)
    return;
    if(m>20||m<0)
    continue;
    if(InitJob(&rz,m,&all)!=0)
    return;
    printf("\n请输入应聘人员总数(5~400),=0:退出");
    scanf("%d",&n);
    if(n
    0)
    return;
    if(n<5||n>400){
    free(rz);
    continue;
    }
    if(InitStu(&head,n,m)!=0)
    return;
    printf("\n应聘人员队列\n");
    OutPutStu(head);
    while(all>0&&head!=NULL){
    p=head;
    head=head->next;
    i=p->z[p->zi];
    if(rz[i].count<rz[i].lmt){
    rz[i].count++;
    Insert(&rz[i].stu,p);
    all–;
    continue;
    }
    if(p->zi>=1){
    p->next=over;
    over=p;
    continue;
    }
    p->sortm-=DEMARK;
    p->zi=1;
    Insert(&head,p);
    }
    for(i=0;i<m;i++){
    printf("\n工种[%d]招聘情况\n",i);
    OutPutStu(rz[i].stu);

    2、2运行结果

    2、3分程序N-S图
    出队操作函数模块
    函数模型
    void OutPutStu(STU *p);
    函数说明(输出应聘人员有序队列中编号和成绩):
    STU *p 招聘人员信息结构体 定义一个p指针指向应聘人员

    释放函数模块
    函数模型
    void FreeStu(STU **p);
    函数说明(释放应聘人员信息):
    STU **p 招聘人员信息结构体 *p是释放应聘人员空间

    随机数函数模块
    函数模型
    int random(int n);
    函数说明(随机数):
    int n 指随机抽取应聘人员信息

    对成绩的安排函数模型
    void Insert(STU **p,STU *u);
    函数说明(随机数):
    STU **p 指抽取的所有成绩
    STU *u 指向成绩的指针

    随机生成工种信息函数模型
    int InitJob(JOB **h,int n,int *all);
    函数说明(工种信息随机函数):
    JOB **h 生成录用者信息
    int n 招聘人员总数
    int *all工种招聘人数

    随机生成应聘人员信息函数模型
    int InitStu(STU **h,int n,int m);
    函数说明(应聘人员信息随机函数):
    STU **h 应聘人员信息数
    int n 应聘人员总数
    int m 工种总数

    void main()主程序

    2、4问题
    2.4.1问题一
    出现C1083错误码:和预编译头的设置有关。
    解决办法:打开Settings对话框,左边的Settings For中选中Release,底下的TreeView中选中StdAfx.cpp,右边选中C/C++标签页,Category选Precompiled Headers,底下选Create precompiled header,Through header填StdAfx.h。左边的TreeView中依次选中工程中其他所有的cpp,Precompiled Headers都选中Use precompiled header file,Through header填StdAfx.h。最后,“OK”、“Rebuild All”。
    vc++6.0 vc2008貌似都不行。

    2.4.2问题二
    VS bug cxx0052 member function not present
    cxx0052 member function not present
    在调试程序的时候碰见一个错误。CXX0052,去MSDN上一查,说是跟内联函数有关,还给了方法说是:
    通过内联强行关闭 (/Ob0) 重新编译文件以在该函数中设置断点。
    于是在project settings midl 中加了/Ob0 还是不行。怀疑是微软的bug

    2、5实训总结
    通过近一周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。
    通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

    西安航空职业技术学院
    课程设计(论文)成绩评定表

    目 考核点细目 分值 得分
    A B C D E

    度 1.考勤(迟到、早退、旷课、卫生) 10
    2.积极准备、认真听讲、独立思考、操作规范主动 10

    操 3.实训完成情况(主动操作、成果) 15
    4.独立操作能力(按角色独立完成操作) 10
    5.团队协作(与组员间的配合) 10
    6.有创新 5
    报告 7.按时完成,书写整洁 10
    8.结构完整、格式规范 10
    答辩 9.举止端正、语言流畅、逻辑性强 10
    10.回答问题正确 10
    总成绩
    说明: A、B、C、D、E为该项得分,分别对应分值的100%、80%、60%、40%、20%
    10(10、8、6、4、2) , 15(15、9、12、6、3)

    成绩:

    签名:

                    年    月    日
    
    展开全文
  • ① 串赋值Assign(s,t):将一个值赋给串s。 ② 销毁串DestroyStr(s):释放串s占用的内存空间。 ③ 串复制StrCopy(s,t):将一个串t赋给串s。 ④ 求串长StrLength(s):返回串s的长度。...⑤ 判断串相等StrEqual(s,t):...
    ① 串赋值Assign(s,t):将一个值赋给串s。
    ② 销毁串DestroyStr(s):释放串s占用的内存空间。
    ③ 串复制StrCopy(s,t):将一个串t赋给串s。
    ④ 求串长StrLength(s):返回串s的长度。
    ⑤ 判断串相等StrEqual(s,t):两个串s和t相等时返回1;否则返回0。
    ⑥ 串连接Concat(s,t):返回串s和串t连接的结果。
    ⑦ 求子串SubStr (s,i,j):返回串s的第i个位置开始的j个字符组成的串。
    ⑧ 查找定位位置Index(s,t):返回子串t在主串s中的位置。
    ⑨ 子串插入InsStr(s,i,t):将子串t插入到串s的第i个位置。
    ⑩ 子串删除DelStr(s,i,j):删除串s中从第i个位置开始的j个字符。
    ⑪ 子串替换RepStrAll(s,s1,s2):将串s中所有出现的子串s1均替换成s2。
    ⑫ 输出串DispStr(s):显示串s的所有字符。
      1 #include<stdio.h>
      2 #define maxsize 100
      3 typedef struct{
      4     char ch[maxsize];
      5     int n;
      6 }SeqString;
      7 
      8 void Assign(SeqString &L,char ch1[]){           //  数组赋值给字符串
      9     int i=0;
     10     while(ch1[i]!='\0'){
     11         L.ch[i]=ch1[i];
     12         i++;
     13     }
     14     L.n=i;
     15 }
     16 
     17 void DisqStr(SeqString &L){                     //  输出串
     18     printf("L.ch的字符串为:");
     19     for(int i=0;i<L.n;i++){
     20         printf("%c",L.ch[i]);
     21     }
     22     printf("\n");
     23 }
     24 
     25 int  concat(SeqString &L,char ch2[]){            //串连接
     26     int i=0,j,m;
     27     m=L.n;
     28     while(ch2[i]!='\0'){
     29         i++;
     30         m++;
     31     }
     32     for(j=0;j<i;j++){
     33         L.ch[j+L.n]=ch2[j];
     34     }
     35     printf("将串ch2连接到L.ch后面,得到的新的字符串为:\n%s\n",L.ch);
     36     L.n=m;
     37     return i;
     38 }
     39 
     40 void Strlength(SeqString &L){                    //求串长
     41     printf("字符串L.ch的长度为:%d\n",L.n);
     42 }
     43 
     44 void StrEqual(SeqString &L,char ch2[],int i){          //判断串相等
     45     int k=0,a;
     46     a=L.n>=i?L.n:i;
     47     printf("判断L.ch和ch2的字符串是否相等!\n结果为:");
     48     for(int j=0;j<a;j++){
     49         if(L.ch[j]==ch2[j]){
     50             k++;
     51         }else if(L.ch[j]>ch2[j]){
     52             printf("1\n");
     53             break;
     54         }else {
     55             printf("-1\n");
     56             break;
     57         }
     58     }
     59     if(k==a){
     60         printf("0\n");
     61     }
     62 }
     63 
     64 void Index (SeqString &L,char ch3[]){
     65     int n=0,i,j,k;
     66     while(ch3[n]!='\0'){
     67         n++ ;
     68     }
     69     for(i=0;i<L.n-n;i++){
     70         for(j=0,k=i;j<n;j++,k++){
     71             if(ch3[j]!=L.ch[k]){
     72                 break;
     73             } }
     74         if(j==n){
     75             printf("ch3字符串是从L.ch字符串中的第%d位置到第%d的位置\n",i+1,i+n);
     76         }
     77     }
     78     return;
     79 }
     80 
     81 void InsStr(SeqString &L,int n,int m){           //串的查找
     82     int i;
     83     printf("L.ch字符串第%d个位置开始的%d个字符为:\n",n,m);
     84     for(i=n-1;i<n+m-1;i++){
     85         printf("%c",L.ch[i]);
     86     }
     87     printf("\n");
     88 }
     89 
     90 int main(){
     91     int i,m,n;
     92     char ch1[100],ch2[5]="efgh",ch3[4]="efg";
     93     SeqString L;
     94     printf("请输入一个字符串:\n");
     95     gets(ch1);
     96     Assign(L,ch1);
     97     DisqStr(L);
     98     Strlength(L);
     99     StrEqual(L,ch2,i);
    100     i=concat(L,ch2);
    101     printf("请问要查找第几个位置开始的几个字符:\n");
    102     scanf("%d %d",&n,&m);
    103     InsStr(L,n,m);
    104     Index(L,ch3);
    105     DisqStr(L);
    106 }

     

    转载于:https://www.cnblogs.com/liuxun1031/p/10891509.html

    展开全文
  • 数据结构实验报告 PAGE PAGE 15 实验一 线性表 实验要求 掌握数据结构中线性表的基本概念 熟练掌握线性表的基本操作创建插入删除查找输出求长度及合并并运算在顺序存储结构上的实验 熟练掌握链表的各种操作和应用 ...
  • 实验报告 课程名称 数据结构 实验项目 哈希查找 实验地点 专业班级 学号 170731063 学生姓名 指导教师 黄永来 年 月 日 七实验评价 七实验评价 学生实验须知 一实验前的准备 1实验前必须充分预习明确实验目的和要求...
  • #include<stdio.h> #include<stdlib.h> typedef char TElemType; typedef struct node{ ... //结点数据 struct node *lchild,*rchild; //左右子女指针 }BinTNode, *BinTree...
  • PAGE 10数据结构实训报告实训报告应用程序名称及要求··································3应用程序主体、设计目的······························...
  • java实训报告总结

    万次阅读 2019-06-25 17:56:26
    实训报告 在实训的八天中,第一天我们了解了学生信息管理系统,了解实训目的及实训里面一层一层的思路,跟着思路用百度脑图写出了实训的结构图。让后创建数据库,并在建好了的数据库student中建四个表分别为student,...
  • 评语: 稚林航夭工止禽院 课程设计报告书 课程名 数据结构 题 甘 排序综合 班级 计算机应用技术 学 号 LZ502010118 姓名 至杭 成歸b 刑导 1录 ?IJ ?x? ? 二越内吝?一. 全少采川三种方浓实现上述何越求解? ? 种出序...
  • 数据结构与C语言综合实训--条码包括完整的代码,以及实习任务书和课程设计报告数据结构与C语言综合实训--条码包括完整的代码,以及实习任务书和课程设计报告
  • 数据结构与算法分析2 课程设计报告书 班级 学号 姓名 惠普测试142 1408090213 闫伟明 指导教师 庞志永 课程设计项目名称 背包问题的多项式时间近似方案 问题描述: 背包问题可描述为如下的整数规划形式其中 的体积 n ...
  • 无线通信实训报告

    2019-04-14 15:36:22
    ADC与数据采集;UART串行通信实验;定时器1实验;外部中断实验;看门狗实验;IEEE802.15.4基础理论实验;;多种拓扑结构组网实验;基于RFID的基本读写;系统实验通用传感器实验;无线通信系统实验
  • 交互网页设计实验报告 19 实验项目利用listview控件修改和删除记录 实验时间2013年 ...1建立一个数据库文件名为student.mdb在student.mdb数据库中建立student表其结构如表10.1所示并输入若干条记录 字段名称 数据类型 S
  • 循环队列的应用——舞伴配对问题:在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数及性别...
  • 实训总结报告

    2019-09-27 17:14:35
    实训总结报告 中山大学2017软件工程中级实训 15331023 陈康怡 这篇总结报告主要记录一些自己在实训过程中的收获,以及自己觉得相对重要的知识点 阶段2 这一阶段主要针对Gridworld编程,主要为控制各种Actor的行为...

空空如也

空空如也

1 2 3 4 5
收藏数 95
精华内容 38
关键字:

数据结构实训报告

数据结构 订阅