- 博客(30)
- 收藏
- 关注
原创 C++primer第五版第三章答案(2)
3.12 (a)正确,创立一个vector,该向量的元素是vector对象。vector对象的类型是int。 (b)不正确,两个向量的类型不同,无法初始化。 (c)正确,其有十个值为“null”的string类型元素。 3.13 a. 一个元素,0。 b.十个元素,每个值都是0。 c.十个元素,每个值都是42。 d.一个元素,其值为10。 e.两个元素,分别为10和42。 f.十个元
2017-08-21 20:01:47
414
原创 C++primer第五版第三章答案(1)
3.2.2节练习: 练习3.2:读入一整行时,可以用while(getline(cin,s1),来每次读取一行。读入一个词时,可以用while(cin>>s1),实现每次读入一个单词。 练习3.3:string类的输入运算符遇到空白字符时会结束输入,而getline函数会将空白字符读入到字符串中,直到遇见换行符才结束,而且换行符不在这个字符串中。 练习3.4: 比较是否相等: #i
2017-08-13 10:29:59
528
原创 EOJ 3179 简单的匹配
#include #include #include #define maxn 100 #define maxm 30 char t[maxn],p[maxm]; int simple_match(char t[],char p[],int n,int m) { int i,j,k; for(i=0;i<=n-m;i++)//从0一直找到n-m,因为m为要查找数组的长度
2017-01-03 20:56:31
467
原创 EOJ 3178 二分查找
#include #include #include #define max 1000 int a[max]; int bisect(int a[],int n, int v)//定义二分查找函数 { int i,j,m; i=0;//i为开始 j=n-1;//j为结束 while(i<=j) { m=(i+j)/2;//m为i和j中
2017-01-03 20:53:05
425
原创 EOJ 3177 顺序查找
#include #include #include int a[1000]; int serach(int a[],int x,int n) { int i; for(i=0;i<n;i++)//顺序查找 { if(a[i]==x)//找到要查找的元素,返回下标 return i; } if(i==n)//如果
2017-01-03 20:48:57
316
原创 EOJ 3176 链栈
#include #include #include struct node { int data; struct node *link; }; typedef struct node NODE; NODE *head=NULL; void push(char x) { NODE *p; p=(NODE*)malloc(sizeof(NODE)); p
2017-01-03 20:43:56
303
原创 EOJ 3174 入栈出栈
#include #include #include char stack[1500];//栈数组 int top=0;//栈顶 int push(char x) { if(top>=1025)//栈满,入栈失败 return 1; stack[top++]=x;//否则入栈,先入栈后top加一 return 0; } int pop() {
2017-01-03 20:30:49
366
原创 EOJ 1819 询问
#include #include int a[5000000] = { 0 }; int main() { int m, n; scanf("%d%d", &m, &n);//共有m个数,输出最小的n个 getchar();//读入换行符 int i, j, t; for (i = 0; i<m; i++) { char c;
2017-01-02 16:37:25
388
原创 EOJ 1818
#include #include #include #include #include #include #include #include #include #include #define maxn 105 #define INF 0x3f3f3f3f using namespace std; typedef long long LL; int m[maxn][max
2017-01-02 14:26:34
592
原创 EOJ 1817 最短路
#include #include #include #include #include #include #include #include #define MAXINT 9999999 #define MAXN 1800 typedef int MAT[MAXN][MAXN];//定义二维数组,用以存储邻接矩阵 MAT cost; int dist[MAXN],pre[MAXN],
2017-01-01 14:28:10
500
原创 EOJ 1816 连通?
#include #include #include using namespace std; struct l_node { int ver; struct l_node *link;//建立邻接表的结构 }; typedef struct l_node L_NODE; typedef struct//图的边存储结构 { int ver1; int ver2
2016-12-31 10:55:49
406
原创 EOJ 1815 Huffman树
#include #include #include #define max 1005 struct node//建立二叉树 { int data; struct node*lchild; struct node*rchild; }; typedef struct node NODE; int a[max]; int w[2*max-1];//内部节点外部节点数目之和
2016-12-31 09:34:34
462
原创 EOJ 1814 完全二叉树?
#include #include #include int main() { int n,r; scanf("%d%d",&n,&r);//共有n个节点,r为树根 int i; int degree[1030],a,b,flag=0;//flag用来判断最终树的状态 memset(degree,0,sizeof(degree));//将保存节点的度的
2016-12-31 09:33:42
379
原创 EOJ 1813 树重建
#include #include #include typedef struct node//构建二叉树的节点 { struct node*left; struct node*right; char ele; }Tree; void last(char *mid,char *pre,int len) { if(len==0)//如果长度为0,直接返回
2016-12-30 22:50:22
428
原创 EOJ 1812 二叉树的深度
#include #include #include struct tree//构建二叉树的节点 { int lch,rch; }; tree t[10005];//最多有10000个元素 int max(int a,int b) { return a>b? a:b;//返回较大的数的函数 } int dfs(int n)//dfs计算深度 { return n?ma
2016-12-28 15:42:10
330
原创 EOJ 1811 树的遍历
#include #include #include struct DNODE//构建层号标示法的节点 { int lev; char data; }; struct Node//构建树的节点 { int lev; char data; Node* parent; Node* child[30]; Node(DNODE a)//树的节点
2016-12-27 21:43:52
457
原创 EOJ 1809 询问
#include #include #include int a[1000005]; int comp(const void*a,const void*b) { return *(int*)a-*(int*)b;//若a-b>0,就调用qsort交换位置 } int main() { int n,k; scanf("%d",&n);//有n个数待排序
2016-12-27 21:40:03
352
原创 EOJ 1808 冒泡排序
#include #include #include void sort(int a[],int n) { int i,j,t; for(i=0;i<n-1;i++)//共执行n-1遍 { for(j=0;j<n-1-i;j++)//每次从0开始执行到n-1-j { if(a[j]>a[j+1])//把a[j]和
2016-12-27 20:34:04
432
原创 EOJ 1807 快速排序
#include #include #include #include #include #include #include #include void qsort(int a[],int low, int up) { int i,j; int t; if(low<up)//low<up时才有效 { i=low;//令i,j分别取此时的最
2016-12-27 20:20:07
486
原创 EOJ 1806 选择排序
#include #include #include void selection_sort(int* a,int n) { int i,j,k,t; for(i=0;i<n-1;i++)//0到n-2共n-1次循环 { k=i; for(j=i+1;j<n;j++)//从i+1一直寻找到an-1 {
2016-12-25 00:12:00
419
原创 EOJ 1804 string
#include #include #include #define max 1025 char *strca(char *a,char *ss)//把字符串ss连接到被操作的字符串之后 { int i,j,k; i=strlen(a);//测量原字符串和新加的字符串的长度 j=strlen(ss); for(k=0;k<=j;k++) {
2016-12-21 17:42:20
406
原创 EOJ 1803 link-list
Description 实现线性链表的创建于插入(插入到已有元素之后)。 Input 第一行有一个整数n( 0 第三行有一个整数q,表示插入操作的个数。接下来q行里每行内有两个整数,第一个整数为链表中已经出现的元素, 第二整数是要被插入的元素, 并且数据保证链表中始终不会出现相同的元素。 Output 对于每次操作,将链表从头到尾打印出来,整数间用空格隔开。
2016-12-20 11:17:39
428
原创 EOJ 1802 铁路调度
Description 如下图,表示一个铁路调度站,为栈式结构,所有的火车必须右端进去并且从左端离开,现在有n(0 < n < 10)列火车要进行调度,按照进入的顺序从1到n进行编号。对于一个给定的一个出站序列,你需要判断是否是一个合法的序列。 例如: n = 4, 出站序列为 4321, 这是合法的,1234依次进栈,再依次出栈得到4321 Input 输入第一行是一个整数k
2016-12-20 11:15:09
1628
原创 EOJ 1801 环形队列
Description 实现环形队列(MAXN不超过100001),要求能够进行进队出队操作,参考课本P15页例程。 Input 初始时,队列为空。 第一行有一个整数q,表示操作的个数,接下来的q行里,每行格式如下: enqueue xxx, 表示把整数xxx进队; dequeue, 表示出队. Output 对于每次出队操作,打印出队元素,如出队不成功,打印
2016-12-20 10:28:59
1190
原创 单链表的创建与删除
#include #include #include #include #include #include #include #include typedef struct node { char data; struct node*link; }NODE; NODE * creat(int n) { int i; NODE *head,*p,*q;
2016-11-02 15:23:08
301
原创 双栈实现算数表达式
双栈算术表达式求值算法 源代码是java实现的,先把他改成cpp实现。 原理大家应该都懂,就是两个栈,一个保存读取式子的符号,遇到“(”不读,遇到“)”进行操作,其他符号保存。另一个栈保存每次读到的数字。 因为每次读到)时候,都要进行一次操作,而操作对象就是最小的那对括号里面的数字,也就是第二个栈顶保存的两个元素,所以可操作。 #include #include #include
2016-11-01 13:41:35
1228
原创 EOJ 1800 线性表的删除
参照sq_delete函数,对一个n不超过1024的线性表进行删除操作。 Description 实现一个线性表: 参照课本P5上的sq_delete函数,对一个n不超过1024的线性表进行删除操作 Input 第一行有一个整数n,表示线性表的大小,第二行有n个整数,分别是list1,list2...listn。 第三行有一个整数q,表示q次删除操作,接下来q行,每
2016-10-23 00:05:19
1148
原创 稀疏矩阵三元组转化
Description 利用原稀疏矩阵的三元数组a,求转置矩阵的三元数组b,并将其规格化,即按行号递增,若行号相同则按照列号递增的顺序。 参照课本P93.94例程 Input 第一行有三个整数m,n,c表示矩阵的行数和列数以及原三元组a的个数,(m,n 处理到文件结尾处 Output 输出三元数组b,每个三元组一行。 Sample Input 2 2 2
2016-10-21 23:22:59
1583
原创 栈的入栈出栈操作
#include #define max 26 char stack[max]; int top=0; int push(char x) { if(top>=max) return 1; stack[top++]=x; return 0; } int pop() { if(top==0) return 1; top=top-
2016-10-19 19:33:24
1079
原创 对给定链表进行插入排序。
struct node { int data; struct node* rlink; struct node* llink; }; typedef struct node NODE; void insertion_sort(NODE *head,int n) { NODE *p,*q; int t; for(p=head;p!=NULL;p=p->
2016-10-18 23:17:49
504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人