数据结构——顺序表的基本操作
目录
1.顺序表的定义
2.define和typedef
3.以下所有用到函数的声明
4.建表,为表开放空间
5.建表,并且输入表内的值
6.在L中第i个位置之前查人新的数据元素e,L的长度加1
7.删除L的第i个数据元素,并用e返回其值,L的长度减一
8.用e返回第i个元素的值(因为i对应着第i-1个位置)
9.打印表的内容
10.判断是否为空表(L.length是顺序表的长度,当表长等于0时,空表;不为0时,不空)
11.按值查找函数(顺序查找)
12.求第i个元素的直接后继
13.求第i个元素的直接前驱
14.switch选择函数
15.输出表长
16.摧毁表操作
17.//清空这个表
18.在清空表以后输入表的内容
19.功能函数
代码全部:
运行结果:
在数据结构课程中,顺序表有着很重要的作用,虽然说顺序表和数组类似,所以操作较为简单。
主要依据严蔚敏版数据结构教材。
这个文本,主要是针对线性表中的顺序表而操作的。以下代码为自己作业,如果有问题欢迎大家指点。
内容:
void print()
{printf("\n\t输入数字来选择功能\n");printf("\t0.退出\n");printf("\t1.在L中第i个位置之前插入新的数据元素e,L的长度加1\n");printf("\t2.删除L的第i个数据元素,并用e返回其值,L的长度减一\n");printf("\t3.用e返回第i个元素的值\n");printf("\t4.打印表\n");printf("\t5.判断表是否为空\n");printf("\t6.按值查找\n");printf("\t7.求表的长度\n");printf("\t8.求第i个元素的直接后继\n");printf("\t9.求第i个元素的直接前驱\n");printf("\t10.建表\n");printf("\t11.摧毁顺序表\n");printf("\t12.清空这个顺序表\n");printf("\t13.在清空表的基础上重新输入这个表\n");
}
1.顺序表的定义
我们在这里可以使用结构体类型来定义
typedef struct{int *elem; //顺序表基地址int length; //顺序表当前长度int listsize; //顺序表容量
}*Sqlist;
2.define和typedef
//define区
#define List_Init_Size 100
#define List_Increment 10
#define OK 1
#define OVERFLOW -2
#define ERROR 0//预处理指令区
#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>
3.以下所有用到函数的声明
//函数区
Status Initlist_Sq(Sqlist L); //建表,为表开放空间
Sqlist Creat(); //建表,并且输入表内的值
Status ListInsert_Sq(Sqlist L,int i,int e); //在L中第i个位置之前查人新的数据元素e,L的长度加1
Status ListDelete_Sq(Sqlist L,int i,int *e); //删除L的第i个数据元素,并用e返回其值,L的长度减一
Status GetElem_Sq(Sqlist L,int i,int *e); //用e返回第i个元素的值
void show(Sqlist L); //打印表
Status ListEmpty(Sqlist L); //查看表是否为空函数
void LocateElem(Sqlist L); //按值查找函数
void NextElem(Sqlist L,int i,int e); //求直接后继
void PriorElem(Sqlist L,int i,int e); //求直接前驱
Status OperateMenu(Sqlist L); //switch选择函数
void Length(Sqlist L); //求表长
void DestoryList(Sqlist L); //摧毁表操作
void ClearList(Sqlist L); //清空这个表
Sqlist InList(Sqlist L); //在清空表以后输入表的内容
void print(); //打印功能表函数
4.建表,为表开放空间
使用malloc函数来动态分配
malloc函数:用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。
//建表,为表开放空间
Status Initlist_Sq(Sqlist L){L->elem=(int*)malloc(List_Init_Size*sizeof(int));if(!L->elem) exit(OVERFLOW); //存储分配失败L->length=0; //空表长度为0L->listsize=List_Init_Size; //初始化存储容量return OK;
}
5.建表,并且输入表内的值
在我们准备输入的时候,需要先为它开方空间,所以要调用Initlist_Sq(Sqlist L)函数,在其后我们使用while循环进行输入,在末尾用printf打印信息显示已经完成。最后返回。
Sqlist Creat()
{//输入表printf("请输入表内元素(每个数字按空格相隔,以输入-1为终止条件):");Sqlist L;Initlist_Sq(L);int e,i=0;scanf("%d",&e);while(e!=-1){L->elem[i]=e;L->length++;i++;scanf("%d",&e);}printf("表已经输好了\n\n");return L;
}
6.在L中第i个位置之前查人新的数据元素e,L的长度加1
Status ListInsert_Sq(Sqlist L,int i,int e){//在L中第i个位置之前查人新的数据元素e,L的长度加1//i的合法值为1<=i<=L.length_Sq(L)+1if(i<1||i>L->length)return ERROR; //i不合法if(L->length>=L->listsize) //当前存储空间已满,增加分配L->elem=(int*)realloc(L->elem,(L->listsize+List_Increment)*sizeof(int));if(L->elem==NULL)return ERROR; //L->listsize+=List_Increment; //增加容量int *q,*p;q=&L->elem[i-1];for(p=&L->elem[L->length-1];p>=q;--p)*(p+1)=*p; //插入位置的以后元素右移*q=e; //插入eL->length++; //表长+1return OK;
}
7.删除L的第i个数据元素,并用e返回其值,L的长度减一
Status ListDelete_Sq(Sqlist L,int i,int *e){if(i<1||i>L->length)return ERROR; //检验合法性int *q,*p;p=&L->elem[i-1]; //p为被删除元素*e = *p; //把被删除元素的值赋值给eq=L->elem+L->length-1;for(++p;p<=q;p++)*(p-1)=*p; //被删除元素以后的左移L->length--; //表-1return OK;
}
8.用e返回第i个元素的值(因为i对应着第i-1个位置)
Status GetElem_Sq(Sqlist L,int i,int *e){if(i<1||i>L->length) printf("输入错误\n");else {*e=L->elem[i-1]; printf("第%d的元素为%d\n\n",i,*e);}
}
9.打印表的内容
void show(Sqlist L){for(int j=0;j<L->length;j++){printf("%d\t",L->elem[j]);}
}
10.判断是否为空表(L.length是顺序表的长度,当表长等于0时,空表;不为0时,不空)
Status ListEmpty(Sqlist L)
{if(L->length == 0){printf("是空表\n\n");}else{printf("不是空表\n\n");}}
11.按值查找函数(顺序查找)
void LocateElem(Sqlist L)
{int e;int k = 1;printf("输入你要查找的元素:");scanf("%d", &e);for (int i = 0; i < L->length; i++)if (L->elem[i] == e){printf("找到了,是第%d个元素\n\n", i + 1);k = 0;break;}if (k)printf("找不到元素%d\n\n", e);
}
12.求第i个元素的直接后继
void NextElem(Sqlist L,int i,int e){if(i>L->length-1||i<=0) printf("输入有误\n\n");else {e=L->elem[i];printf("第%d的元素的直接后继是%d\n\n",i,e);}}
13.求第i个元素的直接前驱
void PriorElem(Sqlist L,int i,int e)
{if(i>L->length||i<=0) printf("输入有误");else {e=L->elem[i-2];printf("第%d的元素的直接前驱是%d\n\n",i,e);}
}
14.switch选择函数
Status OperateMenu(Sqlist L){int num;scanf("%d",&num);while(num){switch(num){case 0://退出num=0;break;case 1://在L中第i个位置之前查人新的数据元素e,L的长度加1if(L==NULL||L->elem==NULL){printf("在使用1号功能之前需要建表\n\n");}else{printf("在L中第i个位置之前插入新的数据元素e,L的长度加1\n");printf("请输入插入位置和数据元素:");int a,b;scanf("%d %d",&a,&b);ListInsert_Sq(L,a,b);printf("已经插入完毕\n\n");}break;case 2://删除L的第i个数据元素,并用e返回其值,L的长度减一if(L==NULL||L->elem==NULL){printf("在使用2号功能之前需要建表\n\n");}else{printf("删除L的第i个数据元素,并用e返回其值,L的长度减一\n");printf("请输入删除位置:");int c,d;scanf("%d",&c);ListDelete_Sq(L,c,&d);printf("删除元素为%d\n",d);}break;case 3://用e返回第i个元素的值if(L==NULL||L->elem==NULL){printf("在使用3号功能之前需要建表\n\n");}else{printf("用e返回第i个元素的值");printf("请输入位置 i :");int f,g;scanf("%d",&f);GetElem_Sq(L,f,&g);}break;case 4://打印表if(L==NULL||L->elem==NULL){printf("在使用4号功能之前需要建表\n\n");}else if(L->length==0){printf("这个表是已经被清空\n");}else{printf("打印表\n");printf("表为:\n");show(L);printf("\n\n");}break;case 5://判断表是否为空if(L==NULL||L->elem==NULL){printf("在使用5号功能之前需要建表\n\n");}else{printf("判断表是否为空\n");ListEmpty(L);}break;case 6://按值查找if(L==NULL||L->elem==NULL){printf("在使用6号功能之前需要建表\n\n");}else{printf("按值查找\n");LocateElem(L);}break;case 7://求顺序表表长if(L==NULL||L->elem==NULL){printf("在使用7号功能之前需要建表\n\n");}else{printf("求顺序表表长\n");Length(L);printf("\n");}break;case 8:if(L==NULL||L->elem==NULL){printf("在使用8号功能之前需要建表\n\n");}else{printf("求直接后继\n");printf("请输入i:");int h,j;scanf("%d",&h);NextElem(L,h,j);}break;case 9:if(L==NULL||L->elem==NULL){printf("在使用9号功能之前需要建表\n\n");}else{printf("求直接前驱\n");printf("请输入i:");int k,m;scanf("%d",&k);if(k<=1||k>L->length){printf("输入错误\n\n");}else{PriorElem(L,k,m);}}break;case 10:printf("建表\n");L=Creat();break;case 11:if(L==NULL||L->elem==NULL){printf("在使用11号功能之前需要建表\n\n");}else{printf("摧毁这个表\n");DestoryList(L);}break;case 12:if(L==NULL||L->elem==NULL){printf("在使用12号功能之前需要建表\n\n");}else{printf("清空这个表\n");ClearList(L);printf("清空表操作完成\n\n");;}break;case 13:if(L==NULL||L->elem==NULL){printf("在使用13号功能之前需要建表\n\n");}else{if(L->length==0){L=InList(L);}else{printf("必须是表清空了才能使用这个函数\n\n");}}break;default:printf("输入有错\n\n");}printf("再次选择数据功能\n");scanf("%d",&num);}
}
15.输出表长
void Length(Sqlist L)//求表长
{if (L->length == 0)printf("表长度为0");elseprintf("表长为:%d\n",L->length);
}
16.摧毁表操作
void DestoryList(Sqlist L)
{free(L->elem);L->length=0;L->listsize=0;L->elem=NULL;;printf("表已经摧毁,如果需要请重新建表\n\n");
}
17.//清空这个表
void ClearList(Sqlist L)
{L->length=0;
}
18.在清空表以后输入表的内容
Sqlist InList(Sqlist L)
{ DestoryList(L);Creat();
}
19.功能函数
void print()
{printf("\n\t输入数字来选择功能\n");printf("\t0.退出\n");printf("\t1.在L中第i个位置之前插入新的数据元素e,L的长度加1\n");printf("\t2.删除L的第i个数据元素,并用e返回其值,L的长度减一\n");printf("\t3.用e返回第i个元素的值\n");printf("\t4.打印表\n");printf("\t5.判断表是否为空\n");printf("\t6.按值查找\n");printf("\t7.求表的长度\n");printf("\t8.求第i个元素的直接后继\n");printf("\t9.求第i个元素的直接前驱\n");printf("\t10.建表\n");printf("\t11.摧毁顺序表\n");printf("\t12.清空这个顺序表\n");printf("\t13.在清空表的基础上重新输入这个表\n");
}
代码全部:
//define区
#define List_Init_Size 100
#define List_Increment 10
#define OK 1
#define OVERFLOW -2
#define ERROR 0//预处理指令区
#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<windows.h>//typedef区
typedef int Status;
typedef struct{int *elem; //顺序表基地址int length; //顺序表当前长度int listsize;//顺序表容量
}*Sqlist;//函数区
Status Initlist_Sq(Sqlist L); //建表,为表开放空间
Sqlist Creat(); //建表,并且输入表内的值
Status ListInsert_Sq(Sqlist L,int i,int e); //在L中第i个位置之前查人新的数据元素e,L的长度加1
Status ListDelete_Sq(Sqlist L,int i,int *e); //删除L的第i个数据元素,并用e返回其值,L的长度减一
Status GetElem_Sq(Sqlist L,int i,int *e); //用e返回第i个元素的值
void show(Sqlist L); //打印表
Status ListEmpty(Sqlist L); //查看表是否为空函数
void LocateElem(Sqlist L); //按值查找函数
void NextElem(Sqlist L,int i,int e); //求直接后继
void PriorElem(Sqlist L,int i,int e); //求直接前驱
Status OperateMenu(Sqlist L); //switch选择函数
void Length(Sqlist L); //求表长
void DestoryList(Sqlist L); //摧毁表操作
void ClearList(Sqlist L); //清空这个表
Sqlist InList(Sqlist L);
void print(); //打印功能表函数//主函数
int main(){char i;print(); //输出功能部分printf("如果想要开始程序,请输入Y或者y,如果不开始可以输入其他,直接退出\n");scanf("%c",&i);if(i=='Y'||i=='y'){Sqlist L=NULL;//Initlist_Sq(L); //建表//Initlist_Sq(K);//printf("请输入表内元素(每个数字按空格相隔,以输入-1为终止条件):");/*int e;for(int i=0;;i++){scanf("%d",&e);if(e==-1)break;L->elem[i]=e;L->length++;}*/print();OperateMenu(L); //switch case判断语句printf("程序退出了,下次见\n");}else{printf("程序截止\n");}
}//建表,为表开放空间
Status Initlist_Sq(Sqlist L){L->elem=(int*)malloc(List_Init_Size*sizeof(int));if(!L->elem) exit(OVERFLOW); //存储分配失败L->length=0; //空表长度为0L->listsize=List_Init_Size; //初始化存储容量return OK;
}Sqlist Creat()
{//输入表printf("请输入表内元素(每个数字按空格相隔,以输入-1为终止条件):");Sqlist L;Initlist_Sq(L);int e,i=0;scanf("%d",&e);while(e!=-1){L->elem[i]=e;L->length++;i++;scanf("%d",&e);}printf("表已经输好了\n\n");return L;
}Status ListInsert_Sq(Sqlist L,int i,int e){//在L中第i个位置之前查人新的数据元素e,L的长度加1//i的合法值为1<=i<=L.length_Sq(L)+1if(i<1||i>L->length)return ERROR; //i不合法if(L->length>=L->listsize) //当前存储空间已满,增加分配L->elem=(int*)realloc(L->elem,(L->listsize+List_Increment)*sizeof(int));if(L->elem==NULL)return ERROR; //L->listsize+=List_Increment; //增加容量int *q,*p;q=&L->elem[i-1];for(p=&L->elem[L->length-1];p>=q;--p)*(p+1)=*p; //插入位置的以后元素右移*q=e; //插入eL->length++; //表长+1return OK;
}//删除L的第i个数据元素,并用e返回其值,L的长度减一
Status ListDelete_Sq(Sqlist L,int i,int *e){if(i<1||i>L->length)return ERROR; //检验合法性int *q,*p;p=&L->elem[i-1]; //p为被删除元素*e = *p; //把被删除元素的值赋值给eq=L->elem+L->length-1;for(++p;p<=q;p++)*(p-1)=*p; //被删除元素以后的左移L->length--; //表-1return OK;
}//用e返回第i个元素的值
Status GetElem_Sq(Sqlist L,int i,int *e){if(i<1||i>L->length) printf("输入错误\n");else {*e=L->elem[i-1]; printf("第%d的元素为%d\n\n",i,*e);}
}//打印表
void show(Sqlist L){for(int j=0;j<L->length;j++){printf("%d\t",L->elem[j]);}
}//判断是否为空表
Status ListEmpty(Sqlist L)
{if(L->length == 0){printf("是空表\n\n");}else{printf("不是空表\n\n");}}//按值查找函数
void LocateElem(Sqlist L)
{int e;int k = 1;printf("输入你要查找的元素:");scanf("%d", &e);for (int i = 0; i < L->length; i++)if (L->elem[i] == e){printf("找到了,是第%d个元素\n\n", i + 1);k = 0;break;}if (k)printf("找不到元素%d\n\n", e);
}//求第i个元素的直接后继
void NextElem(Sqlist L,int i,int e)
{if(i>L->length-1||i<=0) printf("输入有误\n\n");else {e=L->elem[i];printf("第%d的元素的直接后继是%d\n\n",i,e);}
}//求第i个元素的直接前驱
void PriorElem(Sqlist L,int i,int e)
{if(i>L->length||i<=0) printf("输入有误");else {e=L->elem[i-2];printf("第%d的元素的直接前驱是%d\n\n",i,e);}
}//switch选择函数
Status OperateMenu(Sqlist L){int num;scanf("%d",&num);while(num){switch(num){case 0://退出num=0;break;case 1://在L中第i个位置之前查人新的数据元素e,L的长度加1if(L==NULL||L->elem==NULL){printf("在使用1号功能之前需要建表\n\n");}else{printf("在L中第i个位置之前插入新的数据元素e,L的长度加1\n");printf("请输入插入位置和数据元素:");int a,b;scanf("%d %d",&a,&b);ListInsert_Sq(L,a,b);printf("已经插入完毕\n\n");}break;case 2://删除L的第i个数据元素,并用e返回其值,L的长度减一if(L==NULL||L->elem==NULL){printf("在使用2号功能之前需要建表\n\n");}else{printf("删除L的第i个数据元素,并用e返回其值,L的长度减一\n");printf("请输入删除位置:");int c,d;scanf("%d",&c);ListDelete_Sq(L,c,&d);printf("删除元素为%d\n",d);}break;case 3://用e返回第i个元素的值if(L==NULL||L->elem==NULL){printf("在使用3号功能之前需要建表\n\n");}else{printf("用e返回第i个元素的值");printf("请输入位置 i :");int f,g;scanf("%d",&f);GetElem_Sq(L,f,&g);}break;case 4://打印表if(L==NULL||L->elem==NULL){printf("在使用4号功能之前需要建表\n\n");}else if(L->length==0){printf("这个表是已经被清空\n");}else{printf("打印表\n");printf("表为:\n");show(L);printf("\n\n");}break;case 5://判断表是否为空if(L==NULL||L->elem==NULL){printf("在使用5号功能之前需要建表\n\n");}else{printf("判断表是否为空\n");ListEmpty(L);}break;case 6://按值查找if(L==NULL||L->elem==NULL){printf("在使用6号功能之前需要建表\n\n");}else{printf("按值查找\n");LocateElem(L);}break;case 7://求顺序表表长if(L==NULL||L->elem==NULL){printf("在使用7号功能之前需要建表\n\n");}else{printf("求顺序表表长\n");Length(L);printf("\n");}break;case 8:if(L==NULL||L->elem==NULL){printf("在使用8号功能之前需要建表\n\n");}else{printf("求直接后继\n");printf("请输入i:");int h,j;scanf("%d",&h);NextElem(L,h,j);}break;case 9:if(L==NULL||L->elem==NULL){printf("在使用9号功能之前需要建表\n\n");}else{printf("求直接前驱\n");printf("请输入i:");int k,m;scanf("%d",&k);if(k<=1||k>L->length){printf("输入错误\n\n");}else{PriorElem(L,k,m);}}break;case 10:printf("建表\n");L=Creat();break;case 11:if(L==NULL||L->elem==NULL){printf("在使用11号功能之前需要建表\n\n");}else{printf("摧毁这个表\n");DestoryList(L);}break;case 12:if(L==NULL||L->elem==NULL){printf("在使用12号功能之前需要建表\n\n");}else{printf("清空这个表\n");ClearList(L);printf("清空表操作完成\n\n");;}break;case 13:if(L==NULL||L->elem==NULL){printf("在使用13号功能之前需要建表\n\n");}else{if(L->length==0){L=InList(L);}else{printf("必须是表清空了才能使用这个函数\n\n");}}break;default:printf("输入有错\n\n");}printf("再次选择数据功能\n");scanf("%d",&num);}
}//输出表长
void Length(Sqlist L)//求表长
{if (L->length == 0)printf("表长度为0");elseprintf("表长为:%d\n",L->length);
}//摧毁表操作
void DestoryList(Sqlist L)
{free(L->elem);L->length=0;L->listsize=0;L->elem=NULL;;printf("表已经摧毁,如果需要请重新建表\n\n");
}//清空这个表
void ClearList(Sqlist L)
{L->length=0;
}//在清空表以后输入表的内容
Sqlist InList(Sqlist L)
{ DestoryList(L);Creat();
}//功能函数
void print()
{printf("\n\t输入数字来选择功能\n");printf("\t0.退出\n");printf("\t1.在L中第i个位置之前插入新的数据元素e,L的长度加1\n");printf("\t2.删除L的第i个数据元素,并用e返回其值,L的长度减一\n");printf("\t3.用e返回第i个元素的值\n");printf("\t4.打印表\n");printf("\t5.判断表是否为空\n");printf("\t6.按值查找\n");printf("\t7.求表的长度\n");printf("\t8.求第i个元素的直接后继\n");printf("\t9.求第i个元素的直接前驱\n");printf("\t10.建表\n");printf("\t11.摧毁顺序表\n");printf("\t12.清空这个顺序表\n");printf("\t13.在清空表的基础上重新输入这个表\n");
}
运行结果:
如果不建表输入其他功能:
先建表:
功能一:
功能二:
功能三:
功能四:
功能五:
功能六:
功能七:
功能八:
功能九:
数据结构——顺序表的基本操作相关推荐
- Tsai笔记:C++学习随性笔记(2)—— 数据结构:顺序表的基本操作
Tsai笔记:C++学习随性笔记(2)-- 数据结构:顺序表的基本操作 Tsai三步.(第一步,功能说明.第二步,结果图显示.第三步,代码展示) 第一步,功能说明. 1.线性表的顺序存储 线性表的顺序 ...
- 线性表-顺序表的基本操作
线性表的定义和特点 线性表:由n(n≥0)个数据特性相同的元素构成的有限序列 线性表中元素的个数n(n≥0)称为线性表的长度 空表:n=0 对于非空的线性表或线性结构,特点为: 存在唯一的一个被称作& ...
- c++实现顺序表的基本操作
顺序表 数组描述方法将元素存储在一个数组中,用一个数学公式来确定每个元素存储的位置,即在数组中的索引.这是最简单的一种存储方式,所有元素依次存储在一片连续的存储空间中,这就是通常所说的顺序表. - ...
- C++:顺序表的基本操作(待完善)
根据命令提示进行顺序表的基本操作(待完善) #include<iostream> #include<algorithm> using namespace std; #defin ...
- 数据结构——顺序表(二)
顺序表的主要内容 一.顺序表的基本形式 顺序表的基本操作 Python中list实现
- C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...
c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...
- PTA 顺序表的基本操作
原题有50分,这个答案有45分,欢迎指出不足 ;) 6-2 顺序表基本操作 (50 分) 实现顺序表的基本操作,如初始化.插入.删除.输出等. 注意:顺序表中可有重复元素值. 要求:写出三个基本操作函 ...
- 数据结构-顺序表(动态分配存储空间)
数据结构-顺序表(动态分配存储空间) (1)顺序表的结构定义: 结构型定义:(动态分配存储空间) /*** 动态分配存储空间*/ #define InitSize 100 //动态分配存储空间时,不限 ...
- 【头歌】顺序表的基本操作
第1关:顺序表的插入操作 任务描述 本关任务:编写顺序表的初始化.插入.遍历三个基本操作函数. 相关知识 顺序表的存储结构 顺序表的存储结构可以借助于高级程序设计语言中的数组来表示,一维数组的下标与元 ...
最新文章
- python中append的用法_Python 列表 append() 使用方法及示例
- IOS长按识别二维码失败
- PTA基础编程题目集-6-3 简单求和
- tf rnn layer
- html霓虹灯效果图,HTML5 SVG+CSS3霓虹灯文字边框动画特效
- idea 14.1.4 激活方式
- ctc与临时限速服务器信息,基于CTC站场图图形元素设置高速铁路临时限速的方法...
- numpy matrix 矩阵对象
- 模板 - 图论 - 最小生成树
- 用动态规划解小朋友分糖问题
- BZOJ2038:[2009国家集训队]小Z的袜子——题解
- 运动计步app开发的功能分析
- PentaLogix ViewMate Pro v11.16.16破解版
- 2021年危险化学品经营单位安全管理人员考试及危险化学品经营单位安全管理人员作业考试题库
- 系统没有wmi服务器,Win8系统下sql 2008 MOF编译器无法连接WMI服务器怎么办
- Vue 2.0 实战之仿Eleme WebApp SPA(学习)
- 100以内的勾股数python_Python实现获取前100组勾股数的方法
- textarea回车换行的方法
- word论文排版插件_有了这3个Word插件,各种Word难题都能迎刃而解!
- 推进“数字外服”项目,提升公司管理半径
热门文章
- 光伏并网pscad_分布式光伏发电关键技术
- html 直线旋转,HTML实现旋转动画
- Linux配置ospf命令,linux下使用quagga配置ospf协议
- Android ListView中CheckBox选中状态失效的最佳解决方案
- 2019-02-11~2019-02-15
- 警告:服务器不要用超级兔子等优化软件优化
- zynq使用petalinux测试spi flash
- 项目背景怎么描述_影视制作简历范文,【工作经历+项目经验+自我评价】怎么写...
- 如何禁止或暂停Windows的自动屏保、休眠等节电模式
- springboot整合redis详细教程