精华内容
下载资源
问答
  • 纸牌游戏数据结构实训代码 实训要求 题目十三纸牌游戏 基本要求 一副没有花牌JQ K A大小王的扑克牌两个人进行纸牌游戏其中一 个人为用户另一个人为计算机 每轮每人各发 5 张牌各自以这 5张牌建立二叉排序树 由用户先...
  • 目录题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2... 数据结构进阶实训课程笔记和算法练习 Source Code C语言中文网 题目1 建立树的

    Data structure advanced training course notes and algorithm exercises 数据结构进阶实训课程笔记和算法练习

    Source Code

    C语言中文网



    题目1

    建立树的孩子兄弟表示法存储
    

    1.1 算法设计思想

    **孩子兄弟表示法:**任意一棵树,它的节点的第一个孩子如果存在就是唯一的,它的右兄弟存在也是唯一的。因此,我们设置两个指针,分别指向该结点的第一个孩子和此结点的右兄弟

    给定一颗树,可以找到唯一的一颗二叉树与之对应,因此,可以用一颗二叉树来表示一颗树的结构。如图:

                  A                                                                  A
                                                                                  /
    ​       /      |     \                                                    B
                                                                         /        \
    ​    B        C       D                                           E          C
                                                                         \            \
      /    \               |                                             F           D
                                                                                      /
    E       F             G                                                       G
                                                                                  /
    ​                  /    |    \                                              H
                                                                                  \
    ​                H     I       J                                               I
                                                                                      \
    ​                                                                                    J
    

    和二叉树建树的方法相同,递归的思想,先建立左子树,左子树建立完(即遇到结束标志字符’#’),退层建立右子树。

    所以按照将树转化为二叉树,然后输入先序序列来建这棵树。

    1.2 源代码

    #define ElemType char
    
    typedef struct CSNode{
      ElemType data;
      struct CSNode *firstchild, *nextsibling;
    }CSNode, *CSTree;
    
    // eg. ABE#F##C#DGH#I#J#####
    void CreatCSTree(CSTree *t){
      ElemType ch;
      scanf("%c", &ch);
      if(ch=='#') {
        (*t)=NULL;
      }
      else {
        (*t)=(CSTree)malloc(sizeof(CSNode));
        (*t)->data=ch;
        CreatCSTree(&((*t)->firstchild));
        CreatCSTree(&((*t)->nextsibling));
      }
    }
    

    1.3 运行情况截图

    DS



    题目2

    在树的孩子兄弟表示法下,求取树T的高度。
    

    2.1 算法设计思想

    既然我们可以将树转化为孩子兄弟表示法,这种方法用二叉链表的形式实现,那么我们考虑用求二叉树深度的方法来求树的深度。

    区别在于,孩子兄弟表示法中每个节点的右子树是这个节点的兄弟,在原树中并不占深度,所以只需修改算法的求右子树高度的部分即可。

    2.2 源代码

    // eg. ABE#F##C#DGH#I#J#####
    
    int depth(CSTree t){
    if(t){
      int fd = depth(t->firstchild)+1;
      int nd = depth(t->nextsibling);
      return fd>nd? fd:nd;
    }
    }
    

    2.3 运行情况截图

    DS



    题目3

    树采用孩子兄弟表示法存储。
    
    fch data nsib level
    编写算法,将树中所有结点层次值置入每个结点的level域,并要求由根开始逐层输出树中的各条边,边的输出格式为(ki,kj)
            示例
             A           转化为                A
          /  |  \      孩子兄弟表示           /
         B   C   D                        B
        / \  |                          /   \
       E   F G                         E      C
                                        \    /  \
                                         F  G    D
    

    3.1 算法设计思想

    要输出树中各边,存在边,即两节点在树中是父子关系

    在孩子兄弟表示法中,就是与这个节点的左孩子节点,和左孩子节点的所有右孩子节点有边,

    所以一个递归打印当前节点和左孩子构成的边,另一个递归打印当前节点与其左孩子的所有右孩子节点所构成的边。

    3.2 源代码

    #define ElemType char
    
    typedef struct CSNode{
    ElemType data;
    struct CSNode *firstchild, *nextsibling;
    int level;
    }CSNode, *CSTree;
    
    // eg. ABE#F##CG##D###
    CSTree T;
    
    int layer(CSTree t, char x){
    int cot = 0;
    if(t==NULL)
      return cot;
    else if(t->data==x){
      cot = 1;
      return cot;
    }
    else{
      if(layer(t->firstchild, x)){
        cot = layer(t->firstchild, x)+1;
        return cot;
      }
      if(layer(t->nextsibling, x)){
        cot = layer(t->nextsibling, x);
        return cot;
      }
    }
    return cot;
    }
    
    void CreatCSTree(CSTree *t){
    ElemType ch;
    scanf("%c", &ch);
    if(ch=='#') {
      (*t)=NULL;
    }
    else {
      (*t)=(CSTree)malloc(sizeof(CSNode));
      (*t)->data=ch;
      (*t)->level=layer(T, ch);
      CreatCSTree(&((*t)->firstchild));
      CreatCSTree(&((*t)->nextsibling));
    }
    }
    
    void borderNextSibling(CSTree t, CSTree nt){
    printf("%c%c, ", t->data, nt->data);
    if(nt->nextsibling)
      borderNextSibling(t, nt->nextsibling);
    }
    
    void border(CSTree t){
    if(t){
      if(t->firstchild){
        printf("%c%c, ", t->data, t->firstchild->data);
        if(t->firstchild->nextsibling)
          borderNextSibling(t, t->firstchild->nextsibling);
      }
      border(t->firstchild);
      border(t->nextsibling);
    }
    }
    

    3.3 运行情况截图

    DS



    题目4

    已知树采用孩子兄弟表示法表示试编写算法按如下的凹入方式打印树。
            示例
             A                     A
          /  |  \                   B
         B   C   D                   E  
        / \  |                       F
       E   F G                      C
                                     G
                                    D
    利用树的先序遍历完成;
    细化访问visit()操作:先打空格,在输出结点;打印输出的空格数目和结点所在的层次号有关。
    

    4.1 算法设计思想

    首先不考虑前面的每个元素前面的空格,得到打印序列是ABEFCGD,发现这是孩子兄弟表示法的前序遍历结果,然后利用上面第二题的算法获得每个元素的层号,然后打印空格,就可以实现凹入方式打印这棵树了。

    4.2 源代码

    CSTree T;  // 全局变量
    // eg. ABE#F##CG##D###
    
    int layer(CSTree t, char x){
    int cot = 0;
    if(t==NULL)
      return cot;
    else if(t->data==x){
      cot = 1;
      return cot;
    }
    else{
      if(layer(t->firstchild, x)){
        cot = layer(t->firstchild, x)+1;
        return cot;
      }
      if(layer(t->nextsibling, x)){
        cot = layer(t->nextsibling, x);
        return cot;
      }
    }
    return cot;
    }
    
    void visit(CSTree t){
    int i;
    if(t){
      for(i=1; i<layer(T, t->data); i++)
        printf(" ");
      printf("%c\n", t->data);
      visit(t->firstchild);
      visit(t->nextsibling);
    }
    }
    

    4.3 运行情况截图

    DS


    更多精彩

    等多精彩,访问我的个人博客吧!

    展开全文
  • 数据结构进阶实训

    2020-07-15 08:44:44
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源... 数据结构进阶实训课程笔记和算法练习 Source Code: https://gith

    Data structure advanced training course notes and algorithm exercises 数据结构进阶实训课程笔记和算法练习

    Source Code: https://github.com/MysticalGuest/DataStructure/tree/master/AdvancedJuniorTraining



    题目1

    给定一个单链表L,L为头指针,判断该链表内是否局部存在环?
    

    1.1 算法设计思想

    使用快慢指针判断单链表是否存在环。

    使用slow、fast 2个指针,slow慢指针每次向前走1步,fast快指针每次向前走2步,若存在环的话,必定存在某个时候 slow = fast 快慢指针相遇。

    返回值为1:存在环

    返回值为0:不存在环

    1.2 源代码

    typedef struct Node {
      int data;
      struct Node *next;
    }Node, *LinkList;
    
    void InitLinkList(LinkList *L) {
      *L = (LinkList)malloc(sizeof(Node));
      (*L)->next = NULL;
      Node *r=*L, *s, *temp;
      int i=0;
      while(i<10){
        s=(Node*)malloc(sizeof(Node));
        s->data=i;
        r->next=s;
        s->next=NULL;
        if(i==4){   // 记住一个元素,以助后面成环
          temp=r;
        }
        r=s;
        i++;
      }
      r->next=temp;   // 成环
    }
    
    int IsLoopLinkList(LinkList list){
      //空指针
      if(list == NULL){
        return 0;
      }
      //只有头结点,没有元素
      if(list->next == NULL){
        return 0;
      }
      Node* slow = list;
      Node* fast = list;
      int loc = 0;
      while (1){
        if(fast->next == NULL){
          //快指针 到底链表尾结点说明 没有环,此时slow 指向中间结点
          return 0;
        }
        else{
          if (fast->next != NULL && fast->next->next != NULL){
            fast = fast->next->next;
            slow = slow->next;
          }
          else{
            fast = fast->next;
          }
        }
        //某个时刻 快慢指针相遇,说明此处存在环!
        if(slow == fast){
          return 1;
        }
      }
      return 0;
    }
    

    1.3 运行情况截图

    DS



    题目2

    找到单链表中倒数第k个结点。找出解决方法
    要求:尽可能高效
    例如:一个链表有6个结点,(1,2,3,4,5,6)
    这个链表的倒数第3个结点是:值为4的结点
    

    2.1 算法设计思想

    先遍历获得链表长度listlen(L)

    然后计算得出倒数第k个节点的正数位置,也就是listlen(L)-k+1

    遍历到listlen(L)-k+1的节点,然后输出

    2.2 源代码

    /* 求链表长度 */
    int listlen(LinkList L){
      int len=0;
      Node *head=L;
      while(head->next!=NULL){
        len++;
        head=head->next;
      }
      return len;
    }
    
    // main
    scanf("%d", &k);
    for(i=0; i<listlen(L)-k+1; i++){
      p=p->next;
    }
    

    2.3 运行情况截图

    DS



    题目3

    在O(1)时间删除单链表结点;
    给定单链表L及其中一个结点地址p,定义一个函数实现在O(1)时间删除该结点。
    

    3.1 算法设计思想

    将节点p的下一个节点的值赋给p;
    p的后继指向p的后继的后继;
    然后free掉p的后继

    3.2 源代码

    void InitLinkList(LinkList *L, LinkList *temp) {
      *L = (LinkList)malloc(sizeof(Node));
      (*L)->next = NULL;
      Node *r=*L, *s;
      int i=0;
      while(i<10){
        s=(Node*)malloc(sizeof(Node));
        s->data=i;
        r->next=s;
        s->next=NULL;
        if(i==5){   // 记住一个节点地址
          *temp=r;
        }
        r=s;
        i++;
      }
    }
    
    // main
    InitLinkList(&L, &p);
    
    s=p->next;
    p->data = s->data;
    p->next=s->next;
    free(s);
    

    3.3 运行情况截图

    DS



    题目4

    假定用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间,例如:loading和being。
      - 设计一个高效的算法,找出str1和str2的共同后缀的起始位置。(可能有也可能没有。)
      - 分析算法的时空效率
    

    4.1 算法设计思想

    分别获得链表str1和str2的长度;
    移动长度较长的链表的头指针,使得两指针的起始位置相同;
    然后同时往后移动,遇到相同地址的节点即为共同后缀的起始位置

    4.2 源代码

    LinkList reverse(LinkList L){
      if(L->next == NULL || L->next->next == NULL)  {
        return L;   /*链表为空或只有一个元素则直接返回*/
      }
      Node *r, *p = L->next, *q = L->next->next;
      while(q != NULL){        
        r = q->next;
        q->next = p;
        p = q;
        q = r;
      }
    
      /*此时q指向原始链表最后一个元素,也是逆转后的链表的表头元素*/
      L->next->next = NULL;  /*设置链表尾*/
      L->next = p;           /*调整链表头*/
      return L;
    }
    
    LinkList commonSuffix1(LinkList L1, LinkList L2){
      Node *p, *q;
      int len1, len2;
      len1=listlen(L1);
      len2=listlen(L2);
      if(lastNode(L1) != lastNode(L2)){
        return NULL;
      }
      else{
        for(p=L1; len1>len2; len1--){
          p=p->next;
        }
        for(q=L2; len2>len1; len2--){
          q=q->next;
        }
        while(p->next != NULL && p->next != q->next){
          p=p->next;
          q=q->next;
        }
        return p->next;
      }
    }
    
    LinkList commonSuffix2(LinkList L1, LinkList L2){
      Node *p=L1, *q=L2;
      if(L1->next == NULL || L2->next == NULL){   // 空,直接返回
        return NULL;
      }
      // else if(L1->next != L2->next){   // 这里的第一个元素,是原来的最后一个元素
      //   return NULL;    // 不相等直接返回
      // }
      else{
        while(p->next != NULL && q->next != NULL && p->next != q->next){
          p=p->next;
          q=q->next;
        }
        return p->next;
      }
    }
    

    4.3 运行情况截图

    DS


    更多精彩

    等多精彩,访问我的个人博客吧!

    展开全文
  • 数据结构进阶实训

    2020-07-14 11:11:44
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图... 数据结构进阶实训课程笔记和算法练习 Source Code: https://github.com/MysticalGuest/DataStruc

    Data structure advanced training course notes and algorithm exercises 数据结构进阶实训课程笔记和算法练习

    Source Code: https://github.com/MysticalGuest/DataStructure/tree/master/AdvancedJuniorTraining



    题目1

    实现将一个字符串中的每个空格字符换成“%20”。
      - 例如:输入“We are happy.”, 则输出:
      - “We%20are%happy.”
    要求在时间复杂度O(n),空间复杂度O(1)下完成。假设存放字符串的数组空间足够大。
    
    

    1.1 算法设计思想

    前提假设存放字符串的数组空间足够大;

    第一次,遍历,计算出字符串长度,和替换后字符串长度;

    i从原字符串末尾出发,j从新字符串末尾出发,遇到空格就替换为“%20”。

    1.2 源代码

    char str[100] = "We are happy.";    // 假设空间足够大
    int length=0, blank=0, i, j;
    while(str[length]!='\0'){
      printf("%c", str[length]);
      if(str[length]==' '){
        blank++;
      }
      length++;
    }
    length += 2 * blank;
    
    i=length-2*blank;
    j=length;
    
    while(i>=0 && j>i){
      if(str[i]==' '){
        str[j--]='0';
        str[j--]='2';
        str[j--]='%';
      }
      else{
        str[j--]=str[i];
      }
      i--;
    }
    

    1.3 运行情况截图

    DS



    题目2

    数组中出现次数超过一半的数字已知数组中有一个数字其出现的次数超过了数组长度的一半,请找出这个数组。
    要求:
      - 高效
      - 分析时空效率
    
    

    2.1 算法设计思想

    一个数字出现的次数超过了数组的一半,那么将其排序后,称为有序数列,中间的元素即为所求。

    2.2 源代码

    void sort(int a[], int length){
      int i, j, min, temp;
      for(i=0; i<length; i++){
        min=i;
        for(j=i; j<length; j++){
          if(a[min]>a[j])
            min=j;
        }
        if(min!=i){
          temp=a[min];
          a[min]=a[i];
          a[i]=temp;
        }
      }
    }
    
    printf("%d\n", array[length/2]);
    

    2.3 运行情况截图

    DS



    题目3

    已知数组中的n个正数,找出其中最小的k个数。
    要求:
      - 高效
      - 分析时空效率
    

    3.1 算法设计思想

    先将数组从小到大排序;

    即可顺序打印出前k个数,即为数组中最小的k个数。

    时间复杂度为O(n),空间复杂度为O(1)。

    3.2 源代码

    void sort(int a[], int length){
      int i, j, min, temp;
      for(i=0; i<length; i++){
        min=i;
        for(j=i; j<length; j++){
          if(a[min]>a[j])
            min=j;
        }
        if(min!=i){
          temp=a[min];
          a[min]=a[i];
          a[i]=temp;
        }
      }
    }
    
    printf("\nEnter the value k and output the smallest k number among them, k = ");
    scanf("%d", &k);
    printf("The smallest %d number in the array is: \n", k);
    for(i=0; i<k; i++){
      printf("%d\t", array[i]);
    }
    
    

    3.3 运行情况截图

    DS


    更多精彩

    等多精彩,访问我的个人博客吧!

    展开全文
  • 数据结构进阶实训

    2020-07-11 10:18:47
    目录标题题目11.1 算法设计... 数据结构进阶实训课程笔记和算法练习 查看源码 题目1 对于一个字节(8bit)的无符号整型变量 求其二进制表示中“1”的个数。要求算法的执行效率尽可能高。 1.1 算法设计思想 用户直

    数据结构进阶实训课程笔记和算法练习

    查看源码


    题目1

    对于一个字节(8bit)的无符号整型变量
    求其二进制表示中“1”的个数。要求算法的执行效率尽可能高。
    

    1.1 算法设计思想

    用户直接输入一个8位无符号整型常数,并进行用户输入的校验,如果不满足条件,提示用户重新输入,直到输入正确;

    将十进制转换为二进制;

    持续下面循环8次:

    将二进制数模2,结果为1,计数器加1,然后二进制数右移一位;

    循环结束,1的个数为计数器值。

    1.2 源代码

    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    #include<stdlib.h>
    
    void main(){
        printf("Please enter an 8-bit unsigned integer constant:");
        char array[8];
        scanf("%s", array);
        int len = strlen(array);
        // 判断用户输入是否是8位无符号整型常量
        // 并判断用户输入是否为二进制
        // 如果长度不为8,或不是二进制数,则重新输入
        while(len!=8 || strspn(array, "01")!=len){
            printf("Your input does not meet the conditions!\n \
            Please enter an 8-bit unsigned integer constant as required:");
            scanf("%s", array);
            len = strlen(array);
        }
        int arrayToInt = strtol(array, NULL, 2);
    
        //十进制转二进制函数的声明
        int transfer(int x);
        int i=0, num=0;
        for(i; i<len; i++){
            if(transfer(arrayToInt)%2 == 1)
                num++;
            arrayToInt=arrayToInt>>1;
        }
        printf("The number of \"1\" in its binary representation is: %d.\n", num);
    
        printf("The program will continue to run, press any key to close it.");
        getch();
    }
    
    int transfer(int x){
        int i=0;
        int binary = 0b0;
        for(i ; i<x ; i++){
            binary++;
        }
        return binary;
    }
    

    1.3 运行情况截图

    DS



    题目2

    给定一个整数N,N!末尾会有多少个0呢?编写算法计算给定的N!末尾有多少个0?
    

    2.1 算法设计思想

    一个数的阶乘末尾有多少0,即判断这个数除以10的余数是否为0,如果为0,则末尾是0。

    2.2 源代码

    while(factorial>0){
      if(factorial%10==0)
        numOfZero++;
      else
        break;
      factorial = factorial / 10;
    }
    

    2.3 运行情况截图

    DS



    题目3

    求N!的二进制表示中最低位的1的位置。
    

    3.1 算法设计思想

    初始化计数器为0;

    先把n!化为二进制表示的形式,再把其二进制形式模2,如果结果为0,将其二进制形式右移一位,并且计数器加1;

    循环上面的操作,直到模2结果为1,结束循环,计数器即为最后结果。

    3.2 源代码

    int convert(int x){  // 十进制转二进制
      int binary=0b0, i=0;
      for(i; i<x; i++){
        binary++;
      }
      return binary;
    }
    
    void main(){
      int n,factorial=1, i=1, numOfZero=0;
      printf("Please enter an integer and the program will calculate its factorial:");
      scanf("%d", &n);
      for(i ; i<=n; i++){   // 求阶乘
        factorial *= i;
      }
      printf("The factorial of n is %d\n", factorial);
      int binary = convert(factorial);
      while(1){   // 求位置
        numOfZero++;
        if(binary%2==1)
          break;
        binary = binary>>1;
      }
      printf("When representing n! In binary, \
      the position of the lowest bit 1 is (from right to left): %d\n", numOfZero);
    }
    

    3.3 运行情况截图

    DS



    题目4

    对于一个由N个整数组成的数组,设计算法(程序),求出该数组中的最大值和最小值。
    

    4.1 算法设计思想

    先判断数组的前两个值,将小的赋给min,将大的赋给max;

    循环从数组的下标2开始,将数组下标为2的值记为num,如果num小于min,则将num赋值给min,反之则不变;

    如果num大于max,则将num赋值给max,反之则不变;

    直到循环结束,max则为最大值,min为最小值。

    4.2 源代码

    void main(){
      int random, num[20], i=0, max, min;
      printf("Give an array of 20 integers:\n");
      for(i; i<20; i++){    // 使用随机数初始化数组
        random = rand()%100;
        num[i] = random;
        printf("%d  ", num[i]);
      }
      if(num[0]<num[1]){
        max=num[1];
        min=num[0];
      }
      else{
        max=num[0];
        min=num[1];
      }
      i=2;    // 从2开始比较
      for(i; i<20; i++){
        if(num[i]>max)
          max=num[i];
        if(num[i]<min)
          min=num[i];
      }
      printf("\nThe maximum value of the array is: %d", max);
      printf("\nThe minimum value of the array is: %d\n", min);
      system("pause");
    }
    

    4.3 运行情况截图

    DS



    题目5

    快速找出一个数组中所有满足条件的的两个数。(条件:这两个数的和等于一个给定的值sum.)。
    

    5.1 算法设计思想

    从第1个数开始循环与后面的数相加,判断结果如果等于给定值sum就输出这两个值;

    然后从第2个数开始循环与后面的数相加,以此循环直到把数组遍历完。

    5.2 源代码

    void main(){
      int sum=100
      int num[20]={41, 67, 34, 0, 69, 24, 78, 58, 62, 64, 5, 45, 81, 27, 61, 91, 95, 42, 27, 36};
      printf("Give an array of 20 integers:\n");
      int i=0, j;
      for(i; i<20; i++){
        printf("%d  ", num[i]);
      }
      printf("\n");
      i=0;
      for(i; i<20; i++){
        int add=num[i];
        j= i+1;
        for(j; j<20; j++){
          if(add+num[j]==sum){
            printf("The sum of the two numbers found is 100, which are: %d and %d.\n", add, num[j]);
          }
        }
      }
      system("pause");
    }
    

    5.3 运行情况截图

    DS


    更多精彩

    等多精彩,访问我的个人博客吧!

    展开全文
  • 数据结构进阶实训

    2020-07-12 22:20:03
    目录题目11.1 算法设计思想1.2 源代码1.3 运行... 数据结构进阶实训课程笔记和算法练习 Source Code 题目1 输入数字n,按顺序打印输出从1到最大的n位十进制数。比如输入3,则打印出1,2,3,一直到最大的3位数999。 -
  • 数据结构进阶实训

    2020-08-07 18:55:44
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源代码3.3 运行情况截图题目44.1 算法设计思想4.2 源代码4.3 运行情况...
  • 数据结构进阶实训

    2020-07-19 16:57:21
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源代码3.3 运行情况截图题目44.1 算法设计思想4.2 源代码4.3 运行情况...
  • 数据结构进阶实训

    2020-08-04 15:59:11
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源代码3.3 运行情况截图题目44.1 算法设计思想4.2 源代码4.3 运行情况...
  • 数据结构进阶实训

    2020-07-30 11:12:00
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源代码3.3 运行情况截图 Data structure advanced training course ...
  • 数据结构进阶实训

    2020-07-21 20:28:37
    这里写目录标题题目11.1 算法设计思想1.2 源代码1.3 运行情况截图题目22.1 算法设计思想2.2 源代码2.3 运行情况截图题目33.1 算法设计思想3.2 源代码3.3 运行情况截图 Data structure advanced training course ...
  • 数据结构进阶实训课程笔记和算法练习 Source Code C语言中文网 题目1 判断给定的图G是否是连通图。若连通,则输出该生成树。若不连通,则输出其所有的连通子图(生成森林) - 图G分别采用邻接矩阵或邻接表存储...
  • 题目给出部分代码,请补全内容。 #include<stdio.h> #include<malloc.h> #define OK 1 #define ERROR 0 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define ElemType int typedef s
  • 题目给出部分代码,请补全内容。] #include "stdio.h" #include "stdlib.h" #include "iostream.h" #define MAXSTRLEN 255 // 用户可在255以内定义最大串长 typedef unsigned char SString[MAXSTRLEN+1]; // 0号...
  • 其实这个用数组,很容易就可以完成,但是为了学习数据结构,还是用链表写的 题目: 编写一套计算机学院教师信息管理系统,用菜单进行管理,具备输入、显示、查找、排序、插入等功能。每一条记录包括一位教师的职工号...
  • . C# 语 言 编 程 报 告 系部电子信息系 班级计算机 1201 姓名 陈紫房 学号 0602120134 指导教师邱文严 Word 专业资料 . 项目报告 1 设计题目 学生成绩管理... 掌握数组结构体等数据结构的设计方法 4. 掌握排序检
  • C语言课程实训指导书

    2013-01-07 21:18:58
    C语言课程实训的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计方法,按照课程实训题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C语言程序及编写设计...
  • 数据结构课程设计报告(附代码

    千次阅读 多人点赞 2015-01-14 13:16:41
    数据结构课程设计报告 一、实训目的 通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现。掌握C++较复杂程序的组织和设计...
  • 解除C语言实训烦恼 “计算机能力强化实训”(C语言)任务书 一、实训目的 C语言程序设计是本科工科类各专业的重要基础课,主要学习程序设计的基本概念和方法,通过本门课程学习,使学生掌握C语言的基本原理,熟练...
  • (3)确定课程选修的数据结构,至少应包括课程代码、学号和课程成绩等; (4)画出主要算法的流程图; (5)选择C语言的技术:普通数组、结构体数组、函数、指针、单链表或文件等; (6)编写程序代码
  • 本人数据结构只是学了一些皮毛,代码写的比较简单直接,通俗易懂。还望各路大神多多指教 拿到题目遇到的第一个问题,就是如何从指定路径下读取文件,去除空格及标点符号,并将读取到的英文文章拆分为一个个英文单词...
  • ASP.NET精品课程+源代码

    千次下载 热门讨论 2009-01-05 20:15:51
    在本课程学习结束后,学生应在实训周内完成以下题目题目:制作网络论坛设计实例 实训用时:1周 课学时分配: 步骤 教学内容 学时数 告之、学生提问 知识回顾、学习目标、实训课题分析、对学生提问的解答 1 能力...
  • 入门:SQL手工注入漏洞测试(Sql Server数据库)题目背景介绍实训目标解题方向解题步骤 题目 背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Sql Server,Aspx代码对客户端...
  • 入门:SQL手工注入漏洞测试(Access数据库)题目背景介绍实训目标解题方向解题步骤 题目 背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Access,Aspx代码对客户端提交的...
  • 入门:SQL手工注入漏洞测试(MySQL数据库)题目背景介绍实训目标解题方向解题步骤 题目 背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的...
  • @[toc](墨者靶场 初级: SQL手工注入漏洞测试(SQLite数据库)) 题目 背景介绍 安全工程师"墨者"最近在...实训目标 1.掌握SQL注入原理; 2.了解手工注入的方法; 3.了解SQLite的数据结构; 4.了解字符串的MD5加解密...
  • 准备实训需要的相关知识。 2、收集资料  收集整理与题目相关资料。 3、制定方案  制定系统实现方案。 4、需求分析  系统需求分析,撰写文档。 5、概念结构设计和逻辑...
  • 语料/数据集、变量命名神器、分词语料库+代码、任务型对话英文数据集、ASR 语音数据集 + 基于深度学习的中文语音识别系统、笑声检测器、Microsoft多语言数字/单位/如日期时间识别包、中华新华字典数据库及api(包括...
  • 上机实践11 数据结构 66 实验1 扫雷小游戏 66 实验2 排序与查找 70 实验3 使用TreeSet排序 72 上机实践12 java Swing 74 实验1 JLayeredPane分层窗格 74 实验2 使用表格显示日历 75 实验3 多文档界面(MDI) 78 ...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

数据结构实训题目代码

数据结构 订阅