数据结构实验1《基于线性表的图书管理系统》

(visual studio 2019可运行)
输入及输出要求见《数据结构C语言(第二版)》严蔚敏版
【本文仅用于啥都看不懂还想交作业选手】

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include <algorithm>
using namespace std;//排序函数
#define TURE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define MAXSIZE 1000//图表可能达到的最大长度
//定义图书表的顺序储存结构
//定义图书信息
typedef struct
{char no[20];//ISBNchar name[50];//书名float price;//价格
}Book;
typedef struct node//用于链表去重
{long long int no;char name[50];double price;struct node* next;
} Book1, * BookList;
//定义顺序储存结构类型
typedef struct
{Book* elem;//储存空间基地址int length;//当前图书个数
}SqList;
typedef int Status;
typedef int ElemType;
//初始化一个顺序表
Status InitList_Sq(SqList &L)
{L.elem = new Book[MAXSIZE];//份配空间if (!L.elem)//分配失败{exit(OVERFLOW);}L.length = 0;//空表长度为0return OK;
}
//顺序表输入
Status ListInsert(SqList&L)
{int i =1;while (1){if (i > MAXSIZE)//输入图书信息数超过最大值,退出    {exit(OVERFLOW);}scanf("%s %s %f", L.elem[i].no, L.elem[i].name, &L.elem[i].price);//输入图书数据       if (!strcmp(L.elem[i].no, "0") && !strcmp(L.elem[i].name, "0")&& L.elem[i].price == 0){break;//输入结束标志0 0 0则停止输入   }i++;}L.length = i-1;return i-1;
}
//顺序表逆序输入
Status NListInsert(SqList& L)
{int i,t;scanf("%d", &i);t = i;while (1){if (i > MAXSIZE)//输入图书信息数超过最大值,退出 {exit(OVERFLOW);}if (i == 0)//结束输入{break;}scanf("%s %s %f", L.elem[i].no, L.elem[i].name, &L.elem[i].price);//输入图书数据        i--;}L.length = t;return L.length;
}
//顺序表输出
Status ListOutput(SqList& L)
{for (int i = 1; i <= L.length; i++){printf("%s %s %.2f\n", L.elem[i].no, L.elem[i].name, L.elem[i].price);//输出图书信息表       }return OK;
}
//顺序表排序
bool cmp(Book L1, Book L2)//按照价格降序排序
{if (L1.price > L2.price){return true;}else{return false;}
}
Status SqSort(SqList& L)
{sort(&(L.elem[1]), &(L.elem[L.length + 1]), cmp);return OK;
}
//顺序表修改价格
Status Sqprice(SqList& L)
{float avg = 0;//平均价格 for (int i = 1; i <= L.length; i++){avg += L.elem[i].price;//计算所有书的总价格 }avg /= L.length;//所有书的平均价格=总价/书本数量 for (int i = 1; i <= L.length; i++){if (L.elem[i].price >= avg)//高于或等于平均价格的图书价格提高 10%{L.elem[i].price *= 1.1;  }else if (L.elem[i].price < avg)//低于平均价格的图书价格提高20%{L.elem[i].price *= 1.2;}}printf("%.2f\n", avg);//输出平均价格 return OK;
}
//顺序表找最贵的书
Status SqMax(SqList& L)
{int n;//图书数目 printf("请输入数据:\n");scanf("%d", &n);//输入图书数目 InitList_Sq(L); //初始化线性表   L.length = n;//给线性表中的图书数目赋值 if (n<1 || n>MAXSIZE)return OK;int i = 1;while (i <= n){scanf("%s %s %f", L.elem[i].no, L.elem[i].name, &L.elem[i].price);//输入图书信息表 i++;}int maxprice[MAXSIZE];//最贵图书在线性表中的编号 int len = 0, max = 0;//len:最贵图书的数目  max:最贵图书价格 for (int i = 1; i <= n; i++)//查找最贵图书并记录其在线性表中的编号 {if (L.elem[i].price > max)//找到更贵的图书 {len = 1;//更贵图书的数目记为1 maxprice[len] = i;//记录更贵图书在线性表中的编号 max = L.elem[i].price;//修改最贵图书价格 }else if (max == L.elem[i].price)//找到下一本最贵图书 {len++;//最贵图书的数目加1 maxprice[len] = i;//记录更贵图书在线性表中的编号          }}printf("%d\n", len);//输出最贵图书的数目 for (int i = 1; i <= len; i++)//输出最贵图书的信息 {int j;j = maxprice[i];printf("%s %s %.2f\n", L.elem[j].no, L.elem[j].name, L.elem[j].price);//根据编号输出最贵图书的信息 }return OK;//也可以采用顺序表删除
}
//顺序表找出最喜爱的书
Status SqFavor(SqList& L)
{int n;//图书数量int i, j;Book b[MAXSIZE];printf("请输入数据\n");scanf("%d", &n);for (i = 0; i < n; i++){scanf("%s %s %f", &b[i].no, &b[i].name, &b[i].price);}int m,t;//查找m次scanf("%d", &m);Book b_1[MAXSIZE];for (int k = 0; k < m; k++){scanf("%s", &b_1[k].name);}for (int k = 0; k < m; k++){t = 0;for (j = 0; j < i; j++){if (!strcmp(b_1[k].name, b[j].name)){t++;}}if (t == 0){printf("抱歉,这里没有你的最爱!\n");}else{printf("%d\n", t);for (j = 0; j < i; j++){if (!strcmp(b_1[k].name, b[j].name)){printf("%s %s %.2f\n", b[j].no, b[j].name, b[j].price);}}}}return OK;
}
//顺序表图书位置查找
Status SqPlace(SqList& L)
{int n;//图书数量int i, j;Book b[MAXSIZE];printf("请输入数据\n");scanf("%d", &n);for (i = 1; i <= n; i++){scanf("%s %s %f", &b[i].no, &b[i].name, &b[i].price);}int m;//查找m次scanf("%d", &m);int b_1[MAXSIZE];for (int k = 0; k < m; k++){scanf("%d", &b_1[k]);}for (int k = 0; k < m; k++){for (j = 1; j <= n; j++){if (b_1[k]== j)//对应位置并输出{printf("%s %s %.2f\n", b[j].no, b[j].name, b[j].price);}}if (b_1[k]>i||b_1[k]<1)//位置不存在{printf("抱歉,最佳位置上的图书不存在!\n");}}return OK;
}
//顺序表新书入库
Status SqEnter(SqList& L)
{int n, j,i;Book in_b;printf("请输入数据\n");scanf("%d", &n);for (j = 1; j <= n; j++){scanf("%s %s %f", L.elem[j].no, L.elem[j].name, &L.elem[j].price);}L.length = n;scanf("%d", &i);if ((i < 1) || (i > L.length + 1)|| (i == MAXSIZE)){printf("抱歉,入库位置非法!\n");//i值不合法return ERROR;}else {scanf("%s %s %f", &in_b.no,&in_b.name,&in_b.price);for ( j = L.length; j >= i ; j--){L.elem[j + 1] = L.elem[j];//插入位置及之后的元素右移}L.elem[i] = in_b;//将新元素e放入第i个位置++L.length;//表长加1for ( j = 1; j<= L.length; j++){printf("%s %s %.2f\n", L.elem[j].no, L.elem[j].name, L.elem[j].price);//输出图书信息表         }return OK;}
}
//顺序表旧书出库
Status SqDelete(SqList& L)
{int n, j, i;printf("请输入数据\n");scanf("%d", &n);for (j = 1; j <= n; j++){scanf("%s %s %f", L.elem[j].no, L.elem[j].name, &L.elem[j].price);}L.length = n;scanf("%d", &i);if ((i < 1) || (i > L.length)){printf("抱歉,出库位置非法!\n");//i值不合法return ERROR;}else{for (j = i + 1; j <= n; j++){L.elem[j - 1] = L.elem[j];//删除位置及之后的元素左移}--L.length;//表长减1for (j = 1; j <= L.length; j++){printf("%s %s %.2f\n", L.elem[j].no, L.elem[j].name, L.elem[j].price);//输出图书信息表         }return OK;}
}
//顺序表去重
Status SqRepeat(SqList& L)
{int n, j, i,t;printf("请输入数据\n");scanf("%d", &n);for (j = 1; j <= n; j++)//输入{scanf("%s %s %f", L.elem[j].no, L.elem[j].name, &L.elem[j].price);}L.length = n;for (i = 1; i <= n; i++)//书号循环对比{for (j = i + 1; j <= n; j++){if (!strcmp(L.elem[i].no, L.elem[j].no))//重复删除{for (t = j+ 1; t <= n; t++){L.elem[t - 1] = L.elem[t];//删除位置及之后的元素左移}--n;//表长减1--j;}}}printf("%d\n", n);for (j = 1; j <= n; j++){printf("%s %s %.2f\n", L.elem[j].no, L.elem[j].name, L.elem[j].price);//输出图书信息表        }return OK;}
//定义链式储存结构类型
typedef struct LNODE
{Book elem;//数据域LNODE* next;//指针域
}LNODE, * LinkList;
//初始化链表
Status Init(LinkList L)
{L = (LinkList)malloc(sizeof(LNODE));//分配结点空间 if (!L){exit(OVERFLOW);//空间分配失败,退出 }L->next = NULL;//下一本书的地址为空 return OK;//空间分配完成
}
//链表输出数目
Status LNum(LinkList L)
{LinkList r = L;   //输入int i;for (i = 0; i < MAXSIZE; i++) {LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);if (!(strcmp(p->elem.no, "0")) && !(strcmp(p->elem.name, "0")) && p->elem.price == 0) {break;}p->next = NULL;r->next = p;r = p;}if (i)printf("%d\n", i);else//异常return OK;LinkList p = L->next;//输出while (p != NULL){printf("%s %s %.2f\n", p->elem.no, p->elem.name, p->elem.price);p = p->next;}return OK;
}
//链表输入 (后插)
Status Insert(LinkList& L)
{LinkList r = L;   //尾指针r指向头结点int i;for (i = 1; i <= MAXSIZE; i++) {LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);if (!(strcmp(p->elem.no, "0")) && !(strcmp(p->elem.name, "0")) && p->elem.price == 0) {break;}p->next = NULL;r->next = p;r = p;}return OK;
}
//链表输出
Status Loutput(LinkList L)
{LinkList p = L->next;while (p != NULL){printf("%s %s %.2f\n", p->elem.no, p->elem.name, p->elem.price);p = p->next;}return OK;
}
//链表排序
Status Lsort(LinkList L)
{if (L->next == NULL || L->next->next == NULL)//线性表无元素或只有一个元素,无需排序  {return OK;}LinkList pre = L;//操作结点的前一个结点 LinkList now = L->next;//操作结点 LinkList tail = NULL; //尾结点 while (L->next != tail)//冒泡排序 {pre = L;now = L->next;int flag = 0;while (now->next != tail){if (now->elem.price < now->next->elem.price){flag = 1;pre->next = now->next;now->next = now->next->next;pre->next->next = now;pre = pre->next;}else{pre = pre->next;now = now->next;}}if (flag == 0){break;}else{tail = now;}}return OK;
}
//链表提高图书价格
Status Lprice(LinkList& L)
{int num = 0;//图书数量 float avg = 0;//图书平均价格 LinkList p = L->next;while (p != NULL)//遍历线性表 {avg += p->elem.price;//计算图书总价 num++;//统计图书数量 p = p->next;}avg /= num;//图书均价=总价/图书数量 p = L->next;while (p != NULL){if (p->elem.price >= avg){p->elem.price *= 1.1;//所有高于或等于平均价格的图书价格提高10%}else if (p->elem.price < avg){p->elem.price *= 1.2;//所有低于平均价格的图书价格提高20%}p = p->next;}printf("%.2f\n", avg);//输出图书均价 return OK;
}
//链表逆序输出(头插)
Status NInsert(LinkList& L)
{int n,i;scanf("%d", &n);LinkList p = L;          for (i = 1; i <=n; i++)//输入{LinkList r = new LNODE;scanf("%s %s %f", &r->elem.no, &r->elem.name, &r->elem.price);r->next = p->next;p->next = r;}p = p->next;for (i=1; i <= n; i++)//输出{printf("%s %s %.2f\n", p->elem.no, p->elem.name, p->elem.price);p = p->next;}return OK;
}
//链表最贵图书
Status Lexpensive(LinkList& L)
{int n, i, m, k;LinkList r = L;scanf("%d", &n);for (i = 0; i < n; i++) //后插输入{LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);p->next = NULL;r->next = p;r = p;}if (L->next == NULL || L->next->next == NULL)//线性表无元素或只有一个元素,无需排序    {return OK;}LinkList pre = L;//操作结点的前一个结点 LinkList now = L->next;//操作结点 LinkList tail = NULL; //尾结点 while (L->next != tail)//冒泡排序 {pre = L;now = L->next;int flag = 0;while (now->next != tail){if (now->elem.price < now->next->elem.price){flag = 1;pre->next = now->next;now->next = now->next->next;pre->next->next = now;pre = pre->next;}else{pre = pre->next;now = now->next;}}if (flag == 0){break;}else{tail = now;}}LinkList p = L->next;int max = p->elem.price;i = 0;while (p->elem.price == max){i++;p = p->next;}printf("%d\n", i);while (p)p = p->next;p = L->next;while (p->elem.price==max){printf("%s %s %.2f\n", p->elem.no, p->elem.name, p->elem.price);p = p->next;}return OK;
}
//链表最爱图书
Status LFavor(LinkList& L)
{int n, i,m,k,t;scanf("%d", &n);LinkList p = L;for (i = 1; i <= n; i++)//输入 {LinkList r = new LNODE;scanf("%s %s %f", &r->elem.no, &r->elem.name, &r->elem.price);r->next = NULL;p->next = r;p = r;}scanf("%d", &k);//输入查找数目//输入查找书名Book a[MAXSIZE];for(i=0;i<k;i++){scanf("%s", &a[i].name);}for (i = 0; i < k; i++){//遍历查找计算符合条件的书数量m = 0;LinkList now = L->next;//操作结点while (now->next){if (!strcmp(now->elem.name, a[i].name)){m++;now = now->next;}elsenow = now->next;}//输出数量if(m)printf("%d\n", m);else//未找到printf("抱歉,没有你的最爱!\n");//输出图书信息now = L->next;while (now->next){if (!strcmp(now->elem.name, a[i].name)){printf("%s %s %.2f\n", now->elem.no, now->elem.name, now->elem.price);break;}elsenow = now->next;}}return OK;
}
//链表最爱位置
Status LPlace(LinkList L)
{int n, i,m,k;LinkList r = L;    scanf("%d", &n);for (i = 0; i < n; i++) //后插输入{LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);p->next = NULL;r->next = p;r = p;}LinkList p = L->next;int b_1[MAXSIZE];scanf("%d", &m);//查找m次for (k = 0; k < m; k++)//输入位置{scanf("%d", &b_1[k]);}for (k = 0; k < m; k++)//分别查找位置{if (b_1[k]<1 || b_1[k]>n)//位置不合法printf("抱歉,最佳位置上的图书不存在!\n");else{for (i = 1; i < b_1[k]; i++){p = p->next;}printf("%s %s %.2f\n", p->elem.no, p->elem.name, p->elem.price);}}return OK;
}
//链表新书入库
Status LNew(LinkList L)
{int n, i, m, k;LinkList r = L;scanf("%d", &n);for (i = 0; i < n; i++) //后插输入{LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);p->next = NULL;r->next = p;r = p;}scanf("%d", &k);if (k>n+1||k<1)printf("抱歉,入库位置非法!\n");else {LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);r = L->next;for (i = 1; i < k - 1; i++){r = r->next;}p->next = r->next;r->next = p;Loutput(L);}  return OK;
}
//链表旧书出库
Status LOld(LinkList L)
{int n, i, m, k;LinkList r = L;scanf("%d", &n);for (i = 0; i < n; i++) //后插输入{LinkList p = new LNODE;scanf("%s %s %f", &p->elem.no, &p->elem.name, &p->elem.price);p->next = NULL;r->next = p;r = p;}scanf("%d", &k);if (k > n  || k < 1)printf("抱歉,出库位置非法!\n");else{r = L->next;for (i = 1; i < k - 1; i++){r = r->next;}r->next = r->next->next;Loutput(L);}return OK;
}int main()
{int a;printf("你想查看问题几的结果?(请输入数字):\n");scanf("%d", &a);if (a > 0 && a < 11){switch (a){case 1:{//顺序表的创建和输出SqList L;InitList_Sq(L);printf("请输入数据:\n");int i;i = ListInsert(L);printf("%d\n", i);ListOutput(L);break;}case 2:{//顺序表的排序(从高到低)SqList L;InitList_Sq(L);printf("请输入数据:\n");ListInsert(L);SqSort(L);ListOutput(L);break;}case 3:{//顺序表修改价格SqList L;InitList_Sq(L);printf("请输入数据:\n");ListInsert(L);Sqprice(L);ListOutput(L);break;}case 4:{//顺序表逆序存储SqList L;InitList_Sq(L);printf("请输入数据:\n");NListInsert(L);ListOutput(L);break;}case 5:{//找出最贵的书SqList L;SqMax(L);break;}case 6:{//最爱图书查找SqList L;InitList_Sq(L);SqFavor(L);break;}case 7:{//图书位置查找SqList L;InitList_Sq(L);SqPlace(L);break;}case 8:{//新图书的入库SqList L;InitList_Sq(L);SqEnter(L);break;}case 9:{//旧书出库SqList L;InitList_Sq(L);SqDelete(L);break;}case 10:{//去重SqList L;InitList_Sq(L);SqRepeat(L);break;}}}if (a > 10 && a < 21){//链表printf("请输入数据:\n");switch (a){case 11:{//创建输出链表LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);LNum(L);break;}case 12:{//链表排序LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);Insert(L);Lsort(L);Loutput(L);break;}case 13:{//链表修改价格LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);Insert(L);Lprice(L);Loutput(L);break;}case 14:{//链表逆序输出LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);NInsert(L);break;}case 15:{//链表最贵图书LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);Lexpensive(L);break;}case 16:{//链表最爱图书LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);LFavor(L);break;}case 17:{//链表最爱位置LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);LPlace(L);break;}case 18:{//链表新书入库LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);LNew(L);break;}case 19:{//链表旧书出库LinkList L;L = (LinkList)malloc(sizeof(LNODE));Init(L);LOld(L);break;}case 20:{//链表去重int n;scanf("%d", &n);BookList L;Book1* p, * q, * rear;L = (Book1*)malloc(sizeof(Book));L->no = n;L->next = NULL;rear = L;while (n--)//输入{p = (Book1*)malloc(sizeof(Book));scanf("%lld %s %lf", &p->no, p->name, &p->price);rear->next = p;rear = p;}rear->next = NULL;p = L;while (p->next)//查找重复并删除{int flag = 1;q = L->next;while (q != p->next){if (q->no == p->next->no){q = p->next;p->next = q->next;L->no--;free(q);flag = 0;break;}q = q->next;}if (flag == 1)p = p->next;}printf("%d\n", L->no);p = L->next;while (p)//输出{printf("%lld %s %.2f\n", p->no, p->name, p->price);p = p->next;}break;}}}return 0;
}

数据结构实验1《基于线性表的图书管理系统》相关推荐

  1. 数据结构实验--基于线性表的图书信息管理系统

    本文是依据数据结构习题解析与实验指导(李冬梅)一书中的第一个实验–基于线性表的图书信息管理系统所写的. 之所以写这个,是因为这个实验不仅涉及到线性表的结构设计,还包括一些线性表的基本操作,个人认为,做 ...

  2. 数据结构 基于线性表的图书信息管理

    数据结构 基于线性表的图书信息管理 实验前的准备 IDE的选择 C语言中指针与结构体 实验目的 实验内容 1.基于顺序存储结构的图书信息表的创建和输出 代码 实验中遇到的问题 ① 实验中遇到的问题 ② ...

  3. 基于线性表的图书信息管理系统

    基于线性表的图书信息管理系统 [实验目的] 1.掌握线性表的顺序存储表示和链式存储表示. 2.掌握顺序表和链表的基本操作,包括创建.查找.插入和删除等算法. 3.明确线性表两种不同存储结构的特点及其适 ...

  4. 基于顺序表的图书管理系统(C语言)

    Visual Studio编译环境 功能: 0.退出.             1.基于顺序存储结构的图书信息表的创建和输出.             2.基于顺序存储结构的图书信息表的新图书的入库. ...

  5. 数据结构实验1:线性表:贪吃蛇

    这是一个类似于贪吃蛇的程序,一条蛇,在一个矩阵(方阵)中前进,从左上角(0,0)开始,依次吃掉矩阵中的数据,当它碰壁或者发现前进方向上的元素已经被吃过,就转向下一个方向并继续前进,转向的规则依次是:左 ...

  6. 《数据结构》实验二:线性表的实验(实验报告)

    一.实验目的 巩固线性表的数据结构,学会线性表的应用. 1.回顾线性表的逻辑结构,线性表的物理存储结构和常见操作. 2.学习运用线性表的知识来解决实际问题. 3.进一步巩固程序调试方法. 4.进一步巩 ...

  7. 从零开始学数据结构和算法(二)线性表的链式存储结构

    链表 链式存储结构 定义 线性表的链式存储结构的特点是用一组任意的存储单元的存储线性表的数据元素,这组存储单元是可以连续的,也可以是不连续的. 种类 结构图 单链表 应用:MessageQueue 插 ...

  8. 黑马程序员 C语言数据结构与算法之线性表(链表/栈/队列/顺序表)

    C语言 链表基础知识清晰讲解(黑马) 讲的蛮好,就是音质不太好,有时听不清讲的啥! [黑马]数据结构与算法之线性表(链表/栈/队列/顺序表)[配套源码 嘛蛋,看错了,这是java的... 文章目录 链 ...

  9. 数据结构实验:哈希表

    数据结构实验:哈希表 题目描述 在n个数中,找出出现次数最多那个数字,并且输出出现的次数.如果有多个结果,输出数字最小的那一个. 输入 单组数据,第一行数字n(1<=n<=100000). ...

最新文章

  1. mycncart 1.4.0.0 新版本发布
  2. ubuntu安装python-mysqldb
  3. 全国地铁城市数据分析(python实现)
  4. swagger api文档_带有Swagger的Spring Rest API –创建文档
  5. make xdb file.php,SCWS入门使用指南
  6. 演练 制作百度音乐标签页面 0929
  7. .net core精彩实例分享 -- 泛型和集合
  8. flask-前端-requests之response对应关系 img
  9. 2021年5月9日,是第108个母亲节,祝福所有的母亲节日快乐
  10. 读写锁分离的循环队列
  11. 您试图打开的项目是WEB项目,需要通过指定其Url路径来打开它
  12. kettle连接GBASE数据库
  13. 2012第二届GIS制图大赛——赛前培训资料(上篇)
  14. 苹果6显示连接id服务器出错,appleid:appleid连接失败该如何解决
  15. 【Python | 杂代码】Python 里Blueprint(蓝图)的运用
  16. MFC弹出确认和取消对话框
  17. 魅族7.0系统最简单激活Xposed框架的经验
  18. 置信传播算法(Belief Propagation)简介
  19. 【概率论】贝叶斯法则
  20. python可视化分析网易云音乐评论_网易云音乐评论催泪刷屏?我用Python抓取了1008328条热评告诉你为什么!...

热门文章

  1. 51单片机内部E2ROM
  2. PHP高并发商品秒杀问题的解决方案
  3. 简易双色球自动生成器
  4. layui的laydate实现季度选择
  5. fastGithub下载
  6. 【参赛作品30】opengauss gs_basebackup实践
  7. AllenNLP训练的方式
  8. 第20章 系统详细设计与开发编码
  9. Tensorflow分布式训练原理
  10. USB不同接口的速率峰值