精华内容
下载资源
问答
  • 基本算法库  本次实践将建立的基本算法库,用以丰富算法库,灵活应对更多样的工程,所谓“技多不压身”,算法亦如此。  本次实践将运用多文件组织工程的建立,点击此处参考。(编译环境:VC++6.0) ...


    图基本算法库
      本次实践将建立图的基本算法库,用以丰富算法库,灵活应对更多样的工程,所谓“技多不压身”,算法亦如此。
      本次实践将运用多文件组织工程的建立,点击此处参考。(编译环境:VC++6.0)
      建立好的工程文件视角图如下:

      实现源代码如下:
    1.graph.h
    [cpp] view plain copy
    1. //*Copyright  (c)2017,烟台大学计算机与控制工程学院*                     
    2. //*All rights reservrd.*                     
    3. //*文件名称 :graph.h*                     
    4. //*作者:侯成健*                  
    5. //*完成时间:2017年11月23日*                      
    6. //*版本号:v1.0*                  
    7. //*问题描述:包含定义图表示数据结构的代码、宏定义、要实现算法的函数的声明*                     
    8. //*输入描述:无*                     
    9. //*程序输出:无  
    10. #ifndef GRAPH_H_INCLUDED  
    11. #define GRAPH_H_INCLUDED  
    12.   
    13. #define MAXV 100                //最大顶点个数  
    14. #define INF 32767       //INF表示∞  
    15. typedef int InfoType;  
    16.   
    17. //以下定义邻接矩阵类型  
    18. typedef struct  
    19. {  
    20.     int no;                     //顶点编号  
    21.     InfoType info;              //顶点其他信息,在此存放带权图权值  
    22. } VertexType;                   //顶点类型  
    23.   
    24. typedef struct                  //图的定义  
    25. {  
    26.     int edges[MAXV][MAXV];      //邻接矩阵  
    27.     int n,e;                    //顶点数,弧数  
    28.     VertexType vexs[MAXV];      //存放顶点信息  
    29. } MGraph;                       //图的邻接矩阵类型  
    30.   
    31. //以下定义邻接表类型  
    32. typedef struct ANode            //弧的结点结构类型  
    33. {  
    34.     int adjvex;                 //该弧的终点位置  
    35.     struct ANode *nextarc;      //指向下一条弧的指针  
    36.     InfoType info;              //该弧的相关信息,这里用于存放权值  
    37. } ArcNode;  
    38.   
    39. typedef int Vertex;  
    40.   
    41. typedef struct Vnode            //邻接表头结点的类型  
    42. {  
    43.     Vertex data;                //顶点信息  
    44.     int count;                  //存放顶点入度,只在拓扑排序中用  
    45.     ArcNode *firstarc;          //指向第一条弧  
    46. } VNode;  
    47.   
    48. typedef VNode AdjList[MAXV];    //AdjList是邻接表类型  
    49.   
    50. typedef struct  
    51. {  
    52.     AdjList adjlist;            //邻接表  
    53.     int n,e;                    //图中顶点数n和边数e  
    54. } ALGraph;                      //图的邻接表类型  
    55.   
    56. //功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图  
    57. //参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)  
    58. //      n - 矩阵的阶数  
    59. //      g - 要构造出来的邻接矩阵数据结构  
    60. void ArrayToMat(int *Arr, int n, MGraph &g); //用普通数组构造图的邻接矩阵  
    61. void ArrayToList(int *Arr, int n, ALGraph *&); //用普通数组构造图的邻接表  
    62. void MatToList(MGraph g,ALGraph *&G);//将邻接矩阵g转换成邻接表G  
    63. void ListToMat(ALGraph *G,MGraph &g);//将邻接表G转换成邻接矩阵g  
    64. void DispMat(MGraph g);//输出邻接矩阵g  
    65. void DispAdj(ALGraph *G);//输出邻接表G  
    66.   
    67. #endif // GRAPH_H_INCLUDED  


    2.graph.cpp
    [cpp] view plain copy
    1. //*Copyright  (c)2017,烟台大学计算机与控制工程学院*                     
    2. //*All rights reservrd.*                     
    3. //*文件名称 :graph.cpp.cpp*                     
    4. //*作者:侯成健*                  
    5. //*完成时间:2017年11月23日*                      
    6. //*版本号:v1.0*                  
    7. //*问题描述:包含实现各种算法的函数的定义*                     
    8. //*输入描述:无*                     
    9. //*程序输出:无*      
    10. #include <stdio.h>  
    11. #include <malloc.h>  
    12. #include "graph.h"  
    13.   
    14. //功能:由一个反映图中顶点邻接关系的二维数组,构造出用邻接矩阵存储的图  
    15. //参数:Arr - 数组名,由于形式参数为二维数组时必须给出每行的元素个数,在此将参数Arr声明为一维数组名(指向int的指针)  
    16. //      n - 矩阵的阶数  
    17. //      g - 要构造出来的邻接矩阵数据结构  
    18. void ArrayToMat(int *Arr, int n, MGraph &g)  
    19. {  
    20.     int i,j,count=0;  //count用于统计边数,即矩阵中非0元素个数  
    21.     g.n=n;  
    22.     for (i=0; i<g.n; i++)  
    23.         for (j=0; j<g.n; j++)  
    24.         {  
    25.             g.edges[i][j]=Arr[i*n+j]; //将Arr看作n×n的二维数组,Arr[i*n+j]即是Arr[i][j],计算存储位置的功夫在此应用  
    26.             if(g.edges[i][j]!=0 && g.edges[i][j]!=INF)  
    27.                 count++;  
    28.         }  
    29.     g.e=count;  
    30. }  
    31.   
    32. void ArrayToList(int *Arr, int n, ALGraph *&G)  
    33. {  
    34.     int i,j,count=0;  //count用于统计边数,即矩阵中非0元素个数  
    35.     ArcNode *p;  
    36.     G=(ALGraph *)malloc(sizeof(ALGraph));  
    37.     G->n=n;  
    38.     for (i=0; i<n; i++)                 //给邻接表中所有头节点的指针域置初值  
    39.         G->adjlist[i].firstarc=NULL;  
    40.     for (i=0; i<n; i++)                 //检查邻接矩阵中每个元素  
    41.         for (j=n-1; j>=0; j--)  
    42.             if (Arr[i*n+j]!=0)      //存在一条边,将Arr看作n×n的二维数组,Arr[i*n+j]即是Arr[i][j]  
    43.             {  
    44.                 p=(ArcNode *)malloc(sizeof(ArcNode));   //创建一个节点*p  
    45.                 p->adjvex=j;  
    46.                 p->info=Arr[i*n+j];  
    47.                 p->nextarc=G->adjlist[i].firstarc;      //采用头插法插入*p  
    48.                 G->adjlist[i].firstarc=p;  
    49.             }  
    50.   
    51.     G->e=count;  
    52. }  
    53.   
    54. void MatToList(MGraph g, ALGraph *&G)  
    55. //将邻接矩阵g转换成邻接表G  
    56. {  
    57.     int i,j;  
    58.     ArcNode *p;  
    59.     G=(ALGraph *)malloc(sizeof(ALGraph));  
    60.     for (i=0; i<g.n; i++)                   //给邻接表中所有头节点的指针域置初值  
    61.         G->adjlist[i].firstarc=NULL;  
    62.     for (i=0; i<g.n; i++)                   //检查邻接矩阵中每个元素  
    63.         for (j=g.n-1; j>=0; j--)  
    64.             if (g.edges[i][j]!=0)       //存在一条边  
    65.             {  
    66.                 p=(ArcNode *)malloc(sizeof(ArcNode));   //创建一个节点*p  
    67.                 p->adjvex=j;  
    68.                 p->info=g.edges[i][j];  
    69.                 p->nextarc=G->adjlist[i].firstarc;      //采用头插法插入*p  
    70.                 G->adjlist[i].firstarc=p;  
    71.             }  
    72.     G->n=g.n;  
    73.     G->e=g.e;  
    74. }  
    75.   
    76. void ListToMat(ALGraph *G,MGraph &g)  
    77. //将邻接表G转换成邻接矩阵g  
    78. {  
    79.     int i,j;  
    80.     ArcNode *p;  
    81.     g.n=G->n;   //根据一楼同学“举报”改的。g.n未赋值,下面的初始化不起作用  
    82.     g.e=G->e;  
    83.     for (i=0; i<g.n; i++)   //先初始化邻接矩阵  
    84.         for (j=0; j<g.n; j++)  
    85.             g.edges[i][j]=0;  
    86.     for (i=0; i<G->n; i++)  //根据邻接表,为邻接矩阵赋值  
    87.     {  
    88.         p=G->adjlist[i].firstarc;  
    89.         while (p!=NULL)  
    90.         {  
    91.             g.edges[i][p->adjvex]=p->info;  
    92.             p=p->nextarc;  
    93.         }  
    94.     }  
    95. }  
    96.   
    97. void DispMat(MGraph g)  
    98. //输出邻接矩阵g  
    99. {  
    100.     int i,j;  
    101.     for (i=0; i<g.n; i++)  
    102.     {  
    103.         for (j=0; j<g.n; j++)  
    104.             if (g.edges[i][j]==INF)  
    105.                 printf("%3s","∞");  
    106.             else  
    107.                 printf("%3d",g.edges[i][j]);  
    108.         printf("\n");  
    109.     }  
    110. }  
    111.   
    112. void DispAdj(ALGraph *G)  
    113. //输出邻接表G  
    114. {  
    115.     int i;  
    116.     ArcNode *p;  
    117.     for (i=0; i<G->n; i++)  
    118.     {  
    119.         p=G->adjlist[i].firstarc;  
    120.         printf("%3d: ",i);  
    121.         while (p!=NULL)  
    122.         {  
    123.             printf("-->%d/%d ",p->adjvex,p->info);  
    124.             p=p->nextarc;  
    125.         }  
    126.         printf("\n");  
    127.     }  
    128. }  


    3.main.cpp
    [cpp] view plain copy
    1. //*Copyright  (c)2017,烟台大学计算机与控制工程学院*                     
    2. //*All rights reservrd.*                     
    3. //*文件名称 :main.cpp*                     
    4. //*作者:侯成健*                  
    5. //*完成时间:2017年11月23日*                      
    6. //*版本号:v1.0*                  
    7. //*问题描述:测试函数*                     
    8. //*输入描述:无*                     
    9. //*程序输出:无*  
    10. #include <stdio.h>  
    11. #include <malloc.h>  
    12. #include "graph.h"  
    13.   
    14. int main()  
    15. {  
    16.     MGraph g1,g2;  
    17.     ALGraph *G1,*G2;  
    18.     int A[6][6]=  
    19.     {  
    20.         {0,5,0,7,0,0},  
    21.         {0,0,4,0,0,0},  
    22.         {8,0,0,0,0,9},  
    23.         {0,0,5,0,0,6},  
    24.         {0,0,0,5,0,0},  
    25.         {3,0,0,0,1,0}  
    26.     };  
    27.   
    28.     ArrayToMat(A[0], 6, g1);  //取二维数组的起始地址作实参,用A[0],因其实质为一维数组地址,与形参匹配  
    29.     printf(" 有向图g1的邻接矩阵:\n");  
    30.     DispMat(g1);  
    31.   
    32.     ArrayToList(A[0], 6, G1);  
    33.     printf(" 有向图G1的邻接表:\n");  
    34.     DispAdj(G1);  
    35.   
    36.     MatToList(g1,G2);  
    37.     printf(" 图g1的邻接矩阵转换成邻接表G2:\n");  
    38.     DispAdj(G2);  
    39.   
    40.     ListToMat(G1,g2);  
    41.     printf(" 图G1的邻接表转换成邻接邻阵g2:\n");  
    42.     DispMat(g2);  
    43.     printf("\n");  
    44.     return 0;  
    45. }  


    运行结果截图如下:



    展开全文
  • arcgis上机报告

    2015-06-29 14:04:20
    了解ArcGIS数据库的组织原理,掌握应用ArcGIS软件进行屏幕扫描数字化的整个流程,掌握ArcGIS软件进行地图投影和几何纠正的操作方法,掌握GeoDatabase数据库的建立方法、以及属性和图形数据的添加和修改方法。
  • 计算机绘图AutoCAD2004

    2012-11-20 10:14:58
    在编排上,按学生学习规律,经过精心组织,由浅入深,力求做到循序渐进、通俗易懂、全面系统。在每章内容后配有典型实例、习题及上机操作训练,通过全面、系统训练,解决学生理论和应用脱节这一教学难题。 《计算机...
  • 组织考试更加快捷;可对帐户进行全部冻结和解冻的操作,轻松实现限制帐户登录;系统可将Excel格式(见系统“导入帐户模板.xls”文件)帐户导入到系统中,提高了帐户的创建效率。 科目,题型管理功能,让你轻松操作...
  • 建立顺序栈算法库 本次实践将建立顺序栈的算法库,用以解决更多的工程问题,...建立好的工程文件视角如下: 程序源码如下: 1.sqstack.h   #ifndef SQSTACK_H_INCLUDED  #define SQSTAC
    建立顺序栈算法库
    本次实践将建立顺序栈的算法库,用以解决更多的工程问题,提供便利。(编译环境:VC++6.0)
    建立算法库将会用到多文件组织工程的建立,本次实践不再细说,点击此处可参考。
    建立好的工程文件视角图如下:

    程序源码如下:

    1.sqstack.h
    1.    
    2. #ifndef SQSTACK_H_INCLUDED  
    3. #define SQSTACK_H_INCLUDED  
    4.   
    5. #define MaxSize 100  
    6. typedef char ElemType;  
    7. typedef struct  
    8. {  
    9.     ElemType data[MaxSize];  
    10.     int top;                //栈指针  
    11. } SqStack;                  //顺序栈类型定义  
    12.   
    13. void InitStack(SqStack *&s);    //初始化栈  
    14. void DestroyStack(SqStack *&s);  //销毁栈  
    15. bool StackEmpty(SqStack *s);     //栈是否为空  
    16. int StackLength(SqStack *s);  //返回栈中元素个数——栈长度  
    17. bool Push(SqStack *&s,ElemType e); //入栈  
    18. bool Pop(SqStack *&s,ElemType &e); //出栈  
    19. bool GetTop(SqStack *s,ElemType &e); //取栈顶数据元素  
    20. void DispStack(SqStack *s);  //输出栈  
    21.   
    22. #endif // SQSTACK_H_INCLUDED  


    2.sqstack.cpp
    1.      
    2. #include <stdio.h>  
    3. #include <malloc.h>  
    4. #include "sqstack.h"  
    5.   
    6. void InitStack(SqStack *&s)  
    7. {  
    8.     s=(SqStack *)malloc(sizeof(SqStack));  
    9.     s->top=-1;  
    10. }  
    11. void DestroyStack(SqStack *&s)  
    12. {  
    13.     free(s);  
    14. }  
    15. int StackLength(SqStack *s)  //返回栈中元素个数——栈长度  
    16. {  
    17.     return(s->top+1);  
    18. }  
    19. bool StackEmpty(SqStack *s)  
    20. {  
    21.     return(s->top==-1);  
    22. }  
    23. bool Push(SqStack *&s,ElemType e)  
    24. {  
    25.     if (s->top==MaxSize-1)    //栈满的情况,即栈上溢出  
    26.         return false;  
    27.     s->top++;  
    28.     s->data[s->top]=e;  
    29.     return true;  
    30. }  
    31. bool Pop(SqStack *&s,ElemType &e)  
    32. {  
    33.     if (s->top==-1)     //栈为空的情况,即栈下溢出  
    34.         return false;  
    35.     e=s->data[s->top];  
    36.     s->top--;  
    37.     return true;  
    38. }  
    39. bool GetTop(SqStack *s,ElemType &e)  
    40. {  
    41.     if (s->top==-1)         //栈为空的情况,即栈下溢出  
    42.         return false;  
    43.     e=s->data[s->top];  
    44.     return true;  
    45. }  
    46.   
    47. void DispStack(SqStack *s)  //输出栈  
    48. {  
    49.     int i;  
    50.     for (i=s->top;i>=0;i--)  
    51.         printf("%c ",s->data[i]);  
    52.     printf("\n");  
    53. }  


    3.main.cpp
    [
    1. #include <stdio.h>  
    2. #include "sqstack.h"  
    3.   
    4. int main()  
    5. {  
    6.     ElemType e;  
    7.     SqStack *s;  
    8.     printf("(1)初始化栈s\n");  
    9.     InitStack(s);  
    10.     printf("(2)栈为%s\n",(StackEmpty(s)?"空":"非空"));  
    11.     printf("(3)依次进栈元素a,b,c,d,e\n");  
    12.     Push(s,'a');  
    13.     Push(s,'b');  
    14.     Push(s,'c');  
    15.     Push(s,'d');  
    16.     Push(s,'e');  
    17.     printf("(4)栈为%s\n",(StackEmpty(s)?"空":"非空"));  
    18.     printf("(5)栈长度:%d\n",StackLength(s));  
    19.     printf("(6)从栈顶到栈底元素:");DispStack(s);  
    20.     printf("(7)出栈序列:");  
    21.     while (!StackEmpty(s))  
    22.     {  
    23.         Pop(s,e);  
    24.         printf("%c ",e);  
    25.     }  
    26.     printf("\n");  
    27.     printf("(8)栈为%s\n",(StackEmpty(s)?"空":"非空"));  
    28.     printf("(9)释放栈\n");  
    29.     DestroyStack(s);  
    30.     return 0;  
    31. }  


    测试函数运行结果如下:
    展开全文
  • 要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面,枚举量用枚举类型表示。至少实现数据记录的增加、修改、删除、查询及相应结果的显示,查询应能按不同数据项进行。 (3)编制好程序后,设计若干...
  • 建立链串的算法库 一般每一种数据结构都不会局限于在...建立好的工程文件视角如下,对工程结构有一个整体的把握。 工程的源代码如下: 1头文件:liString.h,包含定义链串数据结构的代码、宏定义、要实现算法

    建立链串的算法库

    一般每一种数据结构都不会局限于在连续空间内的存取,那我们的串自然也不反常,本次实践将建立链串的算法库,应用于有需求的工程当中,提高程序的容错性。

    本次实践依然会用到多文件组织工程的建立,具体可点击此处参照。

    建立好的工程文件视角图如下,对工程结构有一个整体的把握。


    工程的源代码如下:

    1头文件:liString.h,包含定义链串数据结构的代码、宏定义、要实现算法的函数的声明;

    //*Copyright  (c)2017,烟台大学计算机与控制工程学院*           
    //*All rights reservrd.*           
    //*文件名称 :liString.h*           
    //*作者:田长航*        
    //*完成时间:2017年10月19日*            
    //*版本号:v1.0*        
    //*问题描述:定义链串数据结构的代码、宏定义、要实现算法的函数的声明*           
    //*输入描述:无*           
    //*程序输出:无*  
    #ifndef LISTRING_H_INCLUDED
    #define LISTRING_H_INCLUDED
    
    typedef struct snode
    {
        char data;
        struct snode *next;
    } LiString;
    
    void StrAssign(LiString *&s,char cstr[]);   //字符串常量cstr赋给串s
    void StrCopy(LiString *&s,LiString *t); //串t复制给串s
    bool StrEqual(LiString *s,LiString *t); //判串相等
    int StrLength(LiString *s); //求串长
    LiString *Concat(LiString *s,LiString *t);  //串连接
    LiString *SubStr(LiString *s,int i,int j);  //求子串
    LiString *InsStr(LiString *s,int i,LiString *t) ;   //串插入
    LiString *DelStr(LiString *s,int i,int j);  //串删去
    LiString *RepStr(LiString *s,int i,int j,LiString *t);  //串替换
    void DispStr(LiString *s);  //输出串
    #endif // LISTRING_H_INCLUDED


    2源文件:liString.cpp,包含实现各种算法的函数的定义

    //*Copyright  (c)2017,烟台大学计算机与控制工程学院*           
    //*All rights reservrd.*           
    //*文件名称 :liString.cpp*           
    //*作者:田长航*        
    //*完成时间:2017年10月19日*            
    //*版本号:v1.0*        
    //*问题描述:各种算法的函数的定义*           
    //*输入描述:无*           
    //*程序输出:无* 
    #include <stdio.h>
    #include <malloc.h>
    #include "liString.h"
    
    void StrAssign(LiString *&s,char cstr[])    //字符串常量cstr赋给串s
    {
        int i;
        LiString *r,*p;
        s=(LiString *)malloc(sizeof(LiString));
        r=s;                        //r始终指向尾节点
        for (i=0;cstr[i]!='\0';i++)
        {   p=(LiString *)malloc(sizeof(LiString));
            p->data=cstr[i];
            r->next=p;r=p;
        }
        r->next=NULL;
    }
    void StrCopy(LiString *&s,LiString *t)  //串t复制给串s
    {
        LiString *p=t->next,*q,*r;
        s=(LiString *)malloc(sizeof(LiString));
        r=s;                //r始终指向尾节点
        while (p!=NULL)     //将t的所有节点复制到s
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
    }
    bool StrEqual(LiString *s,LiString *t)  //判串相等
    {
        LiString *p=s->next,*q=t->next;
        while (p!=NULL && q!=NULL && p->data==q->data)
        {   p=p->next;
            q=q->next;
        }
        if (p==NULL && q==NULL)
            return true;
        else
            return false;
    }
    int StrLength(LiString *s)  //求串长
    {
        int i=0;
        LiString *p=s->next;
        while (p!=NULL)
        {   i++;
            p=p->next;
        }
        return i;
    }
    LiString *Concat(LiString *s,LiString *t)   //串连接
    {
        LiString *str,*p=s->next,*q,*r;
        str=(LiString *)malloc(sizeof(LiString));
        r=str;
        while (p!=NULL)         //将s的所有节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        p=t->next;
        while (p!=NULL)         //将t的所有节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *SubStr(LiString *s,int i,int j)   //求子串
    {
        int k;
        LiString *str,*p=s->next,*q,*r;
        str=(LiString *)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;                      //r指向新建链表的尾节点
        if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s))
            return str;             //参数不正确时返回空串
        for (k=0;k<i-1;k++)
            p=p->next;
        for (k=1;k<=j;k++)          //将s的第i个节点开始的j个节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *InsStr(LiString *s,int i,LiString *t)     //串插入
    {
        int k;
        LiString *str,*p=s->next,*p1=t->next,*q,*r;
        str=(LiString *)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;                              //r指向新建链表的尾节点
        if (i<=0 || i>StrLength(s)+1)       //参数不正确时返回空串
            return str;
        for (k=1;k<i;k++)                   //将s的前i个节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        while (p1!=NULL)                    //将t的所有节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p1->data;
            r->next=q;r=q;
            p1=p1->next;
        }
        while (p!=NULL)                     //将*p及其后的节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *DelStr(LiString *s,int i,int j)   //串删去
    {
        int k;
        LiString *str,*p=s->next,*q,*r;
        str=(LiString *)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;                      //r指向新建链表的尾节点
        if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s))
            return str;             //参数不正确时返回空串
        for (k=0;k<i-1;k++)         //将s的前i-1个节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        for (k=0;k<j;k++)               //让p沿next跳j个节点
            p=p->next;
        while (p!=NULL)                 //将*p及其后的节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    LiString *RepStr(LiString *s,int i,int j,LiString *t)   //串替换
    {
        int k;
        LiString *str,*p=s->next,*p1=t->next,*q,*r;
        str=(LiString *)malloc(sizeof(LiString));
        str->next=NULL;
        r=str;                          //r指向新建链表的尾节点
        if (i<=0 || i>StrLength(s) || j<0 || i+j-1>StrLength(s))
            return str;                 //参数不正确时返回空串
        for (k=0;k<i-1;k++)             //将s的前i-1个节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;q->next=NULL;
            r->next=q;r=q;
            p=p->next;
        }
        for (k=0;k<j;k++)               //让p沿next跳j个节点
            p=p->next;
        while (p1!=NULL)                //将t的所有节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p1->data;q->next=NULL;
            r->next=q;r=q;
            p1=p1->next;
        }
        while (p!=NULL)                 //将*p及其后的节点复制到str
        {   q=(LiString *)malloc(sizeof(LiString));
            q->data=p->data;q->next=NULL;
            r->next=q;r=q;
            p=p->next;
        }
        r->next=NULL;
        return str;
    }
    void DispStr(LiString *s)   //输出串
    {
        LiString *p=s->next;
        while (p!=NULL)
        {   printf("%c",p->data);
            p=p->next;
        }
        printf("\n");
    }


    3.在同一项目(project)中建立一个源文件(如main.cpp),编制main函数,完成相关的测试工作。

    //*Copyright  (c)2017,烟台大学计算机与控制工程学院*           
    //*All rights reservrd.*           
    //*文件名称 :main.cpp*           
    //*作者:田长航*        
    //*完成时间:2017年10月19日*            
    //*版本号:v1.0*        
    //*问题描述:算法库测试函数*           
    //*输入描述:无*           
    //*程序输出:测试结果*
    #include <stdio.h>
    #include "liString.h"
    int main()
    {
        LiString *s,*s1,*s2,*s3,*s4;
        printf("链串的基本运算如下:\n");
        printf("  (1)建立串s和串s1\n");
        StrAssign(s,"abcdefghijklmn");
        printf("  (2)输出串s:");
        DispStr(s);
        StrAssign(s1,"123");
        printf("  (2)输出串s1:");
        DispStr(s1);
        printf("  (3)串s的长度:%d\n",StrLength(s));
        printf("  (4)在串s的第9个字符位置插入串s1而产生串s2\n");
        s2=InsStr(s,9,s1);
        printf("  (5)输出串s2:");
        DispStr(s2);
        printf("  (6)删除串s第2个字符开始的5个字符而产生串s2\n");
        s2=DelStr(s,2,3);
        printf("  (7)输出串s2:");
        DispStr(s2);
        printf("  (8)将串s第2个字符开始的5个字符替换成串s1而产生串s2\n");
        s2=RepStr(s,2,5,s1);
        printf("  (9)输出串s2:");
        DispStr(s2);
        printf("  (10)提取串s的第2个字符开始的10个字符而产生串s3\n");
        s3=SubStr(s,2,10);
        printf("  (11)输出串s3:");
        DispStr(s3);
        printf("  (12)将串s1和串s2连接起来而产生串s4\n");
        s4=Concat(s1,s2);
        printf("  (13)输出串s4:");
        DispStr(s4);
        return 0;
    }


    运行结果截图如下:



    展开全文
  • 本书中设计了列车时刻表查询系统、酒店客房管理系统、房屋租赁系统、书店管理系统、学生上机考试系统、校园点菜系统、餐饮信息服务系统、视频音频播放器、桌面常用软件小助手、俄罗斯方块游戏和局域网聊天系统。...
  • 资料新安晚报 安徽网 大皖客户端讯 安徽省2019年中考方案近日公布。今年全省依然实施统一命题,由各地市自行组织阅卷。和以往相比,今年最大的变化是,八年级学生需要参加生物学、地理和信息技术三科目的考试,...
    111618922b7d77f927c31edfc7161dd9.png

    资料图

    新安晚报 安徽网 大皖客户端讯 安徽省2019年中考方案近日公布。今年全省依然实施统一命题,由各地市自行组织阅卷。和以往相比,今年最大的变化是,八年级学生需要参加生物学、地理和信息技术三科目的考试,其中生物学50分(其中实验操作考试10分)、地理40分、信息技术30分。合肥市暂不将这三个学科考试分数计入高中阶段学校招生录取依据。

    安徽省“异地中考”继续开放

    按照省教育厅要求,2019年初中学业水平考试报名工作由各市、县(区)教育局统一组织。应届毕业生由就读学校组织集体报名,历届生或同等学力者到各市、县(区)规定的报名点报名。

    在我省的进城务工人员随迁子女根据本人意愿,可在流入地就读学校报名参加考试,也可回户籍所在地报名参加考试。在外省接受并完成义务教育的我省学生,自愿回我省报考的,回户籍所在地报名参加考试。市、县(区)教育行政部门应集中设立报名点,接受回户籍所在地参加考试的学生报名。初中学业水平考试报名的具体办法由各市、县(区)教育局负责制定。

    今年中考总分依然是825分

    据悉,2019年九年级学生考试科目总分依然是825分,其中语文150分,数学150分,外语150分(其中听力测试30分),道德与法治和历史学科合卷共计150分,物理与化学学科合卷共计150分,体育与健康60分。理科实验操作考试最高分值15分,学生需在物理、化学、生物学等三科实验操作考试中随机选择一科进行。语文、数学、外语、物理、化学实行纸笔闭卷考试,道德与法治、历史实行纸笔开卷考试,体育与健康实行现场测试。

    语文考试允许使用正版学生字典。道德与法治、历史考试允许携带教科书等相关资料。各学科考试均不允许使用计算器。对于语文考试按照规定可以带入考场的正版学生字典,监考人员将逐一检查,严防以此为名夹带其他资料的严重舞弊行为发生。

    听力残障学生,在500Hz、1000Hz、2000Hz、4000Hz的纯音听力检测结果为每侧耳的平均听力损失都等于或大于40分贝〈HL〉的情况下,经教育主管部门核准后可免试外语听力。听力免试后外语成绩折算方法为:考生外语考试成绩=考生外语笔试项目成绩×外语总分值与笔试项目分值的比值,2019年免试听力考生的外语成绩=考生外语笔试项目成绩×1.25。

    新增学科考试分数暂不纳入总分

    和往年相比,今年方案最大的变化是,八年级学生也需要参加考试了。八年级学生考试科目里生物学50分(其中实验操作考试10分)、地理40分、信息技术30分。地理实行纸笔闭卷考试,生物学实行纸笔闭卷考试与实验操作考试相结合的方式。实验操作考试为必考,分值为10分。信息技术实行上机考试方式。分别安排在6月16日、17日两天考试。

    对于学生和家长来说,最关心的就是这三个新增加的学科,其成绩未来怎么使用。据悉,根据《安徽省教育厅关于进一步推进高中阶段学校考试招生制度改革的实施意见》(皖教基〔2017〕21号)规定,新的招生录取改革率先从铜陵和马鞍山两个城市开始,这两地从2018年秋季初中一年级学生开始招生录取办法综合改革试点。两地以外的城市,包括合肥在内,暂未参加安徽省高中阶段招生录取办法综合改革试点,这意味着学生考试取得了成绩,但是其分数暂时不纳入到中考总分中,不作为高中阶段学校招生录取依据。

    根据规划,2020年秋季初中一年级学生开始,在全省全面实施基于初中学业水平考试成绩、结合综合素质评价的招生录取办法。

    毕业班不得擅自删减非考试内容

    虽然命题和考试由全省统一组织,但是初中学业水平考试阅卷工作由各市教育局组织。伴随着改革的推进,阅卷分数的呈现也要出现变化。我省将坚持综合评价的原则,改变将分数简单相加的方式,综合考虑初中学业水平考试成绩和综合素质评价结果,积极推行学业水平考试成绩以等级形式呈现。

    中考的步伐逐渐逼近,省教育厅对于初三年级后期的教学和管理也做了规定。各初中学校不得违反规定提前结束初中毕业年级课程或擅自删减非考试内容,不得组织毕业年级学生集体补课,不得乱编滥印各种形式的复习资料,不得以任何理由拒绝学生参加初中学业水平考试。不参加初中学业水平考试学生的后期学习学校要做好安排,不得让其提前毕业。各市、县(区)教育局及学校不得以任何形式按初中学业水平考试成绩给地区、学校、教师和学生排名或公布名次,将其列入各市年度规范办学行为考核内容。

    新安晚报 安徽网 大皖客户端记者 张晓嵘

    展开全文
  • 问:我也是钣金人,怎么加入组织?答:点标题下方蓝字“钣金学习网数控折弯机应由专人操作,禁止非相关人员上机操作。操作人员在操作之前应穿戴劳动保护用品,并对机器和工作环境进行仔细检查,检查确认后方可开机...
  • 大一实训---贪吃蛇+走全AI实现

    千次阅读 2013-08-28 22:38:04
    当时老师提示说没思路可以写XX管理系统雏形,当然按照我的想象应该很多人就会写这个了,毕竟上机课都有练过相关的代码实现,只要组织好逻辑再加上一些别出心裁的功能函数,基本上很快就搞定。所以当时楼楼没往这方面...
  • 人力资源管理信息 系统 上机实践报告 目录 1系统分析报告 3 1.1 系统详细调查 3 1.1.1 系统开发背景 3 1.1.2 信息系统范围 4 1.1.3 项目开发方法概述 4 1.1.4 组织结构 4 1.2 业务流程 5 1.2.1 业务流程分析 5 ...
  • 最近课程上机实验,封面渲染时间也超长,所以写东西就落下了,见谅 这篇之后,我会继续《Ray Tracing The Next Week》,还请多多关注 这几天我在渲染这本书的封面,封面还没出,不算结束,刚好安排了10节 ...
  • 软件工程测试3

    2016-03-18 14:56:00
    软件测试第一次上机实验 这次上机我们主要进行Java的一些常用的测试工具的安装与使用,在这里稍微介绍一下这次...3、用于方便的组织和运行测试的测试套件 4、图形和文本的测试运行器 通过Junit我们可以用一种全...
  • 第14章 群体数据的组织 14.1 数组排序的基本算法 14.2 快速排序(QuickSort) 14.3 哈希法(Hashing) 14.4 哈希表类 14.5 搜索搜索方法的性能 14.6 二进制文件和外部数据操作 14.7 辞典 书面作业  上机题  ...
  • 《软件工程与实践》实验报告 日期 2020/10/22 题目:总体设计和数据库设计 姓名 蒙雪云 学号 12018242246 实验环境: 机房Microsoft Visio 2010绘图软件 ...同时把模块组织成良好的层次系统:顶层模块通过调用它的
  • 82 4.2 图形的数据结构 85 4.2.1 图形信息的分类 85 4.2.2 图形数据结构 85 4.2.3 计算机对数据的管理——数据文件 86 4.2.4 图形数据的存储状态 87 4.2.5 动态文件数据结构的组织原则 ...
  • 学生信息管理系统

    2019-04-12 23:22:36
    第三章上机作业 一、题目分析 对例1的学生信息管理系统,要求完成以下基本任务: 1.改写程序为良好程序风格(文档注释,函数注释,语句注释)。 2.将功能补充完全(基于文件处理,完成刷新和保存功能)。 3.将学生...
  • 11、ArcGIS高级开发应用上机或ArcGIS与SQL Server、ArcSDE的关联或 ARCCIS多元数据分析及ARCCIS括元素计算(尽量依学员要求介绍); (空调机房) 主讲人:南京大学规划专业博士、南京路川公司特聘高级讲师 12、...
  • 本书共分19章,遵循由简到繁、由易到难的讲解方式来组织、安排内容。 第1章:Linux基础。本章首先对Unix进行了概述,然后介绍了Linux的技术特点、Linux的版本,以及Linux对中文的支持。 第2章:基本操作。本章主要...
  • 由教师进修学校负责编写测试模拟题,并将测试模拟题提供给各校的信息技术学科教师和学生们上机操作练习,练习过程中发现试题存在问题,请及时与教师进修学校王增贵老师联系,电话:6112913或13859470068,修改后的...
  • 栈是按照“先进后出”或“后进先出”的原则组织数据的。例如,枪械的子弹匣就可以用来形象的表示栈结构。子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。 二级...
  • 按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学、组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高...
  • 《计算机世界》报组织的“世纪评选”把他评为我国“20世纪最有影响的IT人物”10个人之一(排在第2位)。他的功绩是把千百万群众带入计算机的大门。 1 C语言概述 1.1 C语言的发展过程 1.2 当代最优秀的程序设计语言 ...
  • C++程序员面试宝典

    热门讨论 2013-04-01 13:36:19
    1.6 面试+笔试+上机考试 13 1.6.1 面试 13 1.6.2 笔试 14 1.6.3 上机考试 15 1.7 面试后的终结邮件 16 第2章 英文面试(教学视频:60分钟) 18 2.1 英文面试过程和技巧 18 2.2 关于工作 19 面试题1 What salary ...
  • (请查阅北邮复试流程) 想知道北邮各学院的复试细则、调剂政策?想知道各学院的院线?想知道北邮复试考哪些东西?想知道北邮初试复试占比?(请查阅1. 复试细则) 想知道北邮各个组过院线的人数、分数分布?(请...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

上机图组织图