![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
c++/c
c++/c相关题目或者知识点
haibianyoushark
人生没有必要活得太细,更没必要心里挂着太多,与其负重前行,不如轻装上阵,做一个大条神经的人。
展开
-
求邻接点的值
Problem Description设有一无向连通图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示,要求按深度优先遍历的顶点序列先后进行求解,输出各顶点的邻接点值。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0<n<20);第二行为其n个顶点的值,按输入顺序进行存储;接着有e行,表示e条边的信息,每条边信息占一行...原创 2019-01-03 21:12:17 · 604 阅读 · 0 评论 -
邻接矩阵转为邻接表
Problem Description设有向图G,现给出其邻接矩阵,要求将其转化为邻接表(采用头插法存边)进行存储。 Input输入数据有多组每组数据第一行为一个正整数n(0<n<=50),代表G的顶点数目接下来有n行,为有向图G的邻接矩阵 Output对于每组数据,输出有若干行,为该有向图中所有顶点的出边信息(空表不输出任何信息),每行最后均无空格,每两...原创 2018-12-27 17:52:07 · 6718 阅读 · 0 评论 -
广度优先生成树
Problem Description设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用BFS算法求其广度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出广度优先生成树的每一条边。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0<n<20);第二行为其n个顶点的值,按输入顺序进行存储;后面有e...原创 2018-12-26 20:26:04 · 3482 阅读 · 0 评论 -
深度优先生成树
Problem Description设有一连通无向图,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示。利用DFS算法求其深度优先生成树(从下标0的顶点开始遍历),并在遍历过程中输出深度优先生成树的每一条边。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0<n<20);第二行为其n个顶点的值,按输入顺序进行存储;后面有e...原创 2019-01-04 00:03:15 · 3353 阅读 · 0 评论 -
求入度
Problem Description设有一有向图G,其顶点值为字符型并假设各值互不相等,采用邻接表表示法存储。现给定某一顶点值,要求设计一个算法,计算并输出该顶点的入度值。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0<n<20);第二行为其n个顶点的值,按输入顺序进行存储;后面有e行,表示e条边的信息,每条边信息占一行,包括边所依...原创 2018-12-27 17:26:58 · 742 阅读 · 0 评论 -
村村相连
Problem Description漳州市政府调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。市政府的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N(N<100)和M;随后的M行对应村庄间...原创 2018-12-27 16:28:12 · 280 阅读 · 0 评论 -
Prim算法
Problem Description设有一连通无向网,其顶点值为字符型并假设各值互不相等,采用邻接矩阵表示法存储表示,用Prim算法求出其最小生成树,要求当候选最短边集中出现多条权值相同的最短边时,优先选取编号小的顶点。 Input有多组测试数据,每组数据的第一行为两个整数n和e,表示n个顶点和e条边(0<n<20);第二行为其n个顶点的值,按输入顺序进行存储;接着有e...原创 2018-12-26 21:42:19 · 395 阅读 · 0 评论 -
无向图的邻接表遍历
Problem Description给出一个无向图的各个点之间的邻接关系,要求采用邻接表对图进行存储,并输出遍历序列。 Input有多组数据,每组数据第一行有两个整数n和m(0<n,m<100),n表示是有n个点(记为1~n)形成的图,接下来有m行数据,每一行有两个整数(表示点的序号,从1开始),说明这两点之间有一条边,要求采用头插法建立边表。 Output对于每...原创 2018-12-27 18:19:36 · 1588 阅读 · 1 评论 -
二叉链表查找
Problem Description有一棵二叉树,其结点值为字符型并假设各值互不相等,采用二叉链表存储。现输入其扩展二叉树的前序遍历序列,建立该二叉树,要求在该二叉树中查找字符值为x的结点,找到x时,输出x的相关信息,没找到x则输出"not find"。 Input第一行为一个整数n,表示以下有n组数据,每组数据占两行,每组第一行表示扩展二叉树的前序遍历序列;第二行表示待查找的字符x...原创 2018-12-10 23:02:16 · 605 阅读 · 0 评论 -
二叉树的删除以值x为根结点的子树
Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,建立二叉树,设计一个子函数,要求在该二叉树中查找值为x的结点(假设该结点一定存在),并删除以值x为根结点的子树(包括结点本身,最后输出删除后的二叉树的前序遍历序列)。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展...原创 2018-12-05 16:10:15 · 10832 阅读 · 3 评论 -
判断完全二叉树
思路: 根据完全二叉树的定义可知,对完全二叉树按从上到下,从左到右的(即层序遍历)遍历,应该满足以下两点:(1): 若某结点没有左孩子,则一定没有右孩子;(2): 若某节点无左右孩子,则其后继结点一定没有孩子;若不满足以上的任意一条,则一定不是完全二叉树。因此可采用层序遍历二叉树的方法对每个节点判断是否满足以上两点。为此,需设置两个标志变量B...原创 2018-12-05 12:04:57 · 206 阅读 · 0 评论 -
求二叉树双亲
#include<iostream>#include<stdio.h>using namespace std;struct BiNode { char data; BiNode *l,*r; BiNode() { l=r=NULL; }};class Tree {public: BiNode* p; ...原创 2018-12-05 16:13:56 · 2817 阅读 · 0 评论 -
链接存储转为顺序存储
Problem Description问题描述:设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,建立该二叉链表,要求将该二叉树的二叉链表存储结构转换为顺序存储结构,并输出各数组元素,空二叉树用'#'表示。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展二叉树的前序遍历序列,每组数据的长度不会超过50...原创 2018-12-05 12:08:23 · 393 阅读 · 0 评论 -
顺序存储转为链接存储
Problem Description设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用顺序存储表示。现输入其数组各元素值(空二叉树用'#'表示),建立该二叉树,要求将该二叉树的顺序存储结构转换为二叉链表存储结构,并输出其前序遍历序列。 Input第一行为一个整数n,表示以下有n组数据,每组数据占一行,为其数组各元素值(空二叉树用'#'表示),每组数据长度不超过50。 Out...原创 2018-12-05 12:09:33 · 797 阅读 · 0 评论 -
哈夫曼树建立算法
哈夫曼树的建立 Problem Description由若干个值无重复的结点及其权值,建立相应的哈夫曼树。在合并过程中,若出现权值相同的情况,则优先选取编号小的进行合并;要求哈夫曼树中所有左孩子编号小于右孩子编号(以结点的输入顺序做为其编号)。 Input有多组测试数据,每组数据由结点信息组成。结点信息部分的第一行为一个整数n(n<=20),表示以下有n个结点信息,每个结点信...原创 2018-11-25 13:01:01 · 5466 阅读 · 0 评论 -
逆序路径
Problem Description设有一二叉树,其节点值为字符型并假设各值互不相等,采用顺序存储结构存储,空二叉树用'#'表示。现要求设计一个算法,逆序输出从根到层序编号为i的结点的路径。如有一棵二叉树顺序存储为A#B###C#######D,则从根到层序编号为15的逆路径为DCBA。 Input有多组数据,每组测试数据有两行,第一行为数组元素个数n(n<=50)和结点的...原创 2018-12-10 21:20:59 · 729 阅读 · 0 评论 -
交换左右子树
设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求编写一个算法交换二叉树中所有节点的左右子树,并输出交换后的前序遍历。 Input输入的第一行为一个整数n,表示接下来有n组数据。接下来n组,每组占一行,每行包含一个扩展二叉树的前序遍历 Output对于每组数据,若二叉树不为空,输出交换完左右子树后的前序遍历,每组输出占...原创 2018-12-05 12:26:08 · 433 阅读 · 0 评论 -
最小数生成
问题描述:按递增次序生成集合M的最小n个数,M定义如下: 1属于M 若x属于M,则2x+1属于M,3x+1属于M 无别的数属于M要生成数组M中最小的n个数,首先1为这n个数的第一个数,再由1递推出余下的n-1个数。设n个数在数组M中,2x+1与3x+1均作为一个队列,两队列中选一个排头(数值较小者)送入数组M中,所谓排头就是队列中尚...原创 2018-03-28 15:30:59 · 779 阅读 · 0 评论 -
阶乘计算
问题描述: 编写程序,对给定的n(n<=100),计算并输出k的阶乘k!(k=1,2,……,n)的全部有效数字。解答思路: 要求的阶乘k!的值,必定已经求得了(k-1)!的值,依次递推,当k=2时,要求的的1!=1为已知。 求得(k-1)!后,对(k-1)!连续累加k-1次即可求得k!的值。例如:5!=120,计算6!,可对原来的120累加5次后得到72...原创 2018-03-28 17:59:31 · 2488 阅读 · 0 评论 -
单链表复制
有一单链表,已知链表长为n,现在你觉得一个不够,想自己再复制一个,以防以后下次误删,记得要用链表! Input输入有两行,第一行为整数n,直到n为0结束;第二行有n个数据。表长n不超过100。Output输出你Copy的那个链表,数据之间用空格分隔。Sample Input51 2 3 4 582 5 6 8 9 0 1 30 Sample Output1 ...原创 2018-10-24 21:49:23 · 12333 阅读 · 0 评论 -
9006:单链表的建立和遍历
Problem Description输入N个整数,按照输入的顺序建立单链表存储,并遍历所建立的单链表,输出这些数据。 Input输入数据有多组,每组数据占两行;每组第一行为一个数字N(0<N<=50);第二行有N个整数。 Output每组输出占一行,输出这组整数,每两个数字之间用一个空格分隔。 Sample Input512 32 45 78 54...原创 2018-10-24 21:39:29 · 327 阅读 · 0 评论 -
9033:单链表的插入
Problem Description建立单链表,在第n个结点后插入指定结点,并完成遍历操作。 Input输入数据有多组,每组数据占两行:第一行有两个数字(n,m),第一个数n表示结点位置,第二个数表示指定需插入的数。后跟单链表各结点(不会超过100),以0结束一个单链表。例如:3 51 2 3 4 5 00 0遇到0 0,结束程序。 Output输出插入后的单链...原创 2018-10-24 21:33:15 · 290 阅读 · 0 评论 -
9106:查找单链表中的值
Problem Description从非空单链表中查找其值在[s,t]之间(含s和t)的所有元素,要求输出值在[s,t]之间的元素个数。 Input输入的第一行为一个数字n,表示下面有n组数据,每组数据包括3行:第1行包含两个数字s和t,第2行为单链表的表长len(0<len<=20),第3行为单链表的数据元素。 Output每组输出为一行,对于每组输入数据,输...原创 2018-10-24 20:38:37 · 639 阅读 · 0 评论 -
9007:单链表按值操作
Problem Description对值递增有序的单链表进行以下操作:若表中存在值为x的结点,则将它从表中删除;否则,就往表中插入一个值为x的结点,并保持表值递增有序的性质不变(假设表中没有值相同的元素)。处理后若为空表则不输出。 Input每组数据包括3行,第一行表示单链表的长度n(0<=n<50);第二行表示单链表的所有元素;第三行表示x值。 Output输...原创 2018-10-24 21:10:23 · 692 阅读 · 0 评论 -
链表逆序排序
void reverse(){ node* N1=head->next; node* pre=head; node* cur=head->next; while(cur) { node* saved=cur->next; cur->next=pre; pre=cur; cur=saved;转载 2017-11-27 22:12:55 · 492 阅读 · 0 评论 -
双链表的尾插法建立输出
struct node{ int id; char name[32]; node* next; node* prior;};node* head;int len;void creat(){ head=new node; head->prior=NULL; head->next=NULL; node* r=head;原创 2017-11-26 17:44:38 · 616 阅读 · 0 评论 -
单链表删除特定值
void remove( const int& data){ node* cur=head->next; node* pre=head; while(cur) { if(cur->data==data) { node* q=cur; pre->next...原创 2017-11-21 11:40:03 · 1005 阅读 · 0 评论 -
删除单链表的冗余值
1004:删除单链表的冗余值Time/Memory Limit:1000 MS/32768 K Submitted: 21 Accepted: 18 Problem Description给定一个有n个元素的单链表,若单链表中有相等元素则称存在冗余值,要求进行删除操作,即使得单链表中不存在相等元素。 Input第一行为一个数字m,表示下面有m组数据,每组数据包括2行:第1行表...原创 2018-10-20 16:07:09 · 897 阅读 · 0 评论 -
链表在某位置插入某数
struct node{ int count; int data; node* next;};node head;node* creat(){ head.next=0; node* r=&head; r->next=NULL; node* p; int data; while(cin>>data&&data)//原创 2017-12-02 22:13:08 · 857 阅读 · 0 评论 -
单链表删除有序重复元素
void remove( ){ node* cur=head->next; node* pre=head; while(cur) { if(cur->data==pre->data) { node* q=cur; pre->next=cur->next; cu原创 2017-11-21 12:13:45 · 1543 阅读 · 0 评论 -
单链表插入排序
#include#include#includeusing namespace std;struct node{ int a; node* next;};node* head;int len; void creat() { head=NULL; node* p,*r=NULL; int x; for(int i=0;原创 2017-11-09 16:36:11 · 537 阅读 · 0 评论 -
删除单链表的最大值
int fine_max(){ int max=head.next->data; node* p=head.next->next; while(p) { if(maxdata) max=p->data; p=p->next; } return max;}void erase_data(c原创 2017-12-02 12:33:48 · 3974 阅读 · 0 评论 -
单链表删除某区间的值
#include //#include"head.h"#includeusing namespace std;struct node{ int data; node* next;};node* head;int len;void creat(){ head=NULL; node* r=NULL; int x; for(int原创 2017-11-21 12:29:24 · 2173 阅读 · 0 评论 -
尾插法建立链表分解
尾插法建立链表可以看成下面步骤(add函数)的循环:struct LineNode{ char line[256]; LineNode* next;};LineNode LineHead;void add(const char* line){ LineNode* obj=new LineNode; strcpy(obj->line,line);原创 2017-11-17 22:37:29 · 586 阅读 · 0 评论 -
C语言删除特定值
for(i=0;i<n;i++) { if(a[i]==index) { for(j=i;j<n-1;j++) { a[j]=a[j+1]; } n--;i--; } }原创 2017-11-21 11:37:01 · 714 阅读 · 0 评论 -
a链表删除b链表中相同的值
Problem Description已知递增有序的单链表A,B,现在要从链表A中删除链表B中存在的元素。若处理后的链表A不为空,则输出链表A中的元素;否则,输出“empty”。 Input输入的第一行为一个数字T,表示接下来有T组数据;接下来有T组数据,每组数据占四行:第一行为一个整数n(0<=n<=25),表是单链表A的表长;第二行有n个数,表示单链表A中...原创 2018-10-19 12:32:55 · 1136 阅读 · 0 评论 -
有序链表的插入
struct node{ int data; node* next;};node head;int len;node* creat(){ head.next=0; node* r=&head; r->next=NULL; node* p; int data; for( int i=0;i<len;i++) {原创 2017-12-02 22:21:59 · 1225 阅读 · 0 评论 -
删除单链表的众数
struct node{ int count; int data; node* next;};node head;int len;node* creat(){ head.next=0; node* r=&head; r->next=NULL; node* p; for( int i=0; i<len; i++)原创 2017-12-02 19:10:52 · 196 阅读 · 0 评论 -
链表实现队列结构
//节点定义为struct node{ int data; node* next;};//定义栈结构struct Queue{ node head; int length;};//定义相关函数:void init(Queue* q);//初始化void push_back(Queue* q, int data); //尾部推入一个数据原创 2017-11-27 16:42:29 · 353 阅读 · 0 评论 -
单链表删除某位置开始的连续k个数
#include #includeusing namespace std;struct node{ int data; node* next;};node* head;int len;void creat(){ head=NULL; node* r=NULL; int x; for(int i=0;i<len;i++)原创 2017-11-21 16:41:22 · 833 阅读 · 0 评论