C语言及数据结构
uri_yang
这个作者很懒,什么都没留下…
展开
-
在WIN10上安装VC++6.0
百度经验:安装VC++6.0安装包:VC++6.0补充替换文件:替换文件转载 2018-09-25 16:10:03 · 1612 阅读 · 2 评论 -
二叉树的递归/非递归的三种遍历
#include<stdio.h>#include<stdlib.h>typedef struct BitNode{int data;struct BitNode *lchild,*rchild;}BitNode,*BiTree;typedef struct SNode{BiTree p;int tag;}SNode;void createTree(Bi...原创 2019-03-06 20:44:34 · 114 阅读 · 0 评论 -
子集个数
#include <stdio.h>//设置一个数组,数组的下标表示集合中的元素,所以数组只用下标为1,2,3的空间int set[5];//i代表数组下标,n表示集合中最大的元素值void PowerSet(int i,int n){//当i>n时,说明集合中所有的元素都做了选择,开始判断if (i>n) {for (int j=1; j<=n; j+...原创 2019-03-07 11:45:46 · 1052 阅读 · 0 评论 -
回溯法解决八皇后问题
八皇后问题是以国际象棋为背景的问题:有八个皇后(可以当成八个棋子),如何在 88 的棋盘中放置八个皇后,使得任意两个皇后都不在同一条横线、纵线或者斜线上。八皇后问题是使用回溯法解决的典型案例。算法的解决思路是:从棋盘的第一行开始,从第一个位置开始,依次判断当前位置是否能够放置皇后,判断的依据为:同该行之前的所有行中皇后的所在位置进行比较,如果在同一列,或者在同一条斜线上(斜线有两条,为正方形的...原创 2019-03-07 15:53:28 · 243 阅读 · 0 评论 -
字符串中出现频率最高的字符
给定一行字符串,求出这行字符串中出现频率最高的字符,字符串中含有标点符号,字符不区分大小写。如果出现频率相同时,输出先出现在字符串中的字符。#include<iostream>#include<set>#include<map>#include<string>#include<algorithm>using namespa...原创 2019-03-26 17:50:59 · 2491 阅读 · 0 评论 -
0-1背包问题(简单版)
#include#include#define maxN 100using namespace std;int max(int a,int b){return a>b?a:b;}int main(){int N,V;int f[maxN],w[maxN],p[maxN];while(cin>>N>>V){memset(f,0,sizeof(...原创 2019-03-26 22:31:52 · 348 阅读 · 0 评论 -
最长公共子序列(二维数组解决)
#include<iostream>#include<string>#include<vector>using namespace std;void print(vector<vector<int> > &vecb,string str1,int i,int j){ if(i==0||j==0) { return...原创 2019-03-28 11:01:39 · 365 阅读 · 0 评论 -
所有最长公共子序列
#include <vector>#include <iomanip>#include <set>#include <string>#include <map>#include <iostream>#include <string.h>#include <sstream>using na...原创 2019-03-28 11:02:23 · 212 阅读 · 0 评论 -
最长公共子串内容
#include<iostream>#include<string>#include<vector>#include<algorithm>using namespace std;int LCS(const string &s1,const string &s2){ string str1=s1; string s...原创 2019-03-28 11:03:44 · 117 阅读 · 0 评论 -
构建哈夫曼编码
根据输入的字符串,计算字符的频率,构建哈夫曼编码#include<iostream>#include<string>#include<map>using namespace std;typedef char ** HuffmandCode;typedef struct node{ int value; int left,right,parent;...原创 2019-03-28 11:07:28 · 603 阅读 · 0 评论 -
二叉树的层次遍历
#include<stdio.h>#include<stdlib.h>typedef struct BitNode{int data;struct BitNode *lchild,*rchild;}BitNode,*BiTree;typedef struct Queue{BitNode p;struct Queue next;}Queue;void cr...原创 2019-03-06 20:43:02 · 90 阅读 · 0 评论 -
图的深度优先搜索
#include<stdio.h>#include<stdlib.h>#define Max_vex 20int visited[Max_vex];//记录每个顶点被访问的情况typedef struct{int adj;}arcCell,adjMatrix[Max_vex][Max_vex];typedef struct{int vex[Max_vex];...原创 2019-03-08 20:29:28 · 109 阅读 · 0 评论 -
图的广度优先搜索
#include<stdio.h>#include<stdlib.h>#define Max_vex 20int visited[Max_vex];typedef struct{int data;}arcs,Adjmatrix[Max_vex][Max_vex];typedef struct{int vex[Max_vex];Adjmatrix matr...原创 2019-03-08 20:28:09 · 201 阅读 · 0 评论 -
循环链表解决约瑟夫问题
#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;typedef struct RLink{int id;struct RLink* next;}rlink;rlink* initLink(int n)//创建循环链表{rlink* p=(rlink*)malloc(sizeof(rlink));//头结点rlink* temp=p;...原创 2019-02-28 22:58:30 · 322 阅读 · 0 评论 -
str[]和char *str,以及读入字符串的区别
区别在于,str[] 在定义时候就分配了存储空间,而char *str;只是一个指针,如果不进行初始化的话,它没有存储数据的能力。在使用scanf("%s", str)之前,必须要先给 *str分配空间,使用malloc函数,使用完毕后,要记住用free(str);释放掉分配的空间,否则分配的空间不能被再利用。...转载 2019-03-05 11:02:34 · 1093 阅读 · 0 评论 -
双向链表及其基本操作
#include<stdio.h>#include<stdlib.h>typedef struct Line{struct Line* prior;int data;struct Line* next;}line;line* initLine(line* head,int n){head=(line*)malloc(sizeof(line));//没有头结...原创 2019-03-01 20:41:55 · 265 阅读 · 0 评论 -
实践项目之俄罗斯轮盘赌小游戏
俄罗斯轮盘赌:一种残忍的赌博游戏。游戏的道具是一把左轮手枪,游戏规则为:在左轮手枪中的6个弹槽中随意放入一颗或者多颗子弹,在任意旋转转轮之后,关上转轮。游戏的参加者轮流把手枪对着自己,扣动扳机,中枪或者怯场,即为输的一方,坚持到最后的即为胜者。本实践项目类似轮盘赌,使用线性表的两种结构都可实现(链表更容易理解)。游戏规则:n个参加者排成一个环,每次由主持向左轮手枪中装一颗子弹,并随机转动关上转轮...原创 2019-03-02 22:39:57 · 5122 阅读 · 0 评论 -
getchar()和gets(a)一起用的原因
*int B,b;char a[20];printf("请输入待转换的进制数(2-16):");do{ scanf("%d",&B);}while(B<2&&B>16);printf("请输入待转换数:");getchar();//getchar处理前面输入后的回车符的问题,必不可缺少,否则后面无法输入字符串gets(a);//将输入的n进制存放...原创 2019-03-03 14:59:16 · 2278 阅读 · 2 评论 -
进制转换器之数组实现(字符串)
#include<stdio.h>#include<stdlib.h>#include<string.h>int TenNum(char a[],int B);//将B进制转成十进制数void Numchange(int m,int B);//将十进制数转成需要的进制数int TenNum(char a[],int B){int len,i,num...原创 2019-03-03 15:04:00 · 188 阅读 · 0 评论 -
scanf()避免读入上次输入的换行符
C语言的scanf()函数在接收输入单个字符时会把上一次输入的回车符号当做这次输入的字符,造成无法正确的输入字符数据。这恐怕是初学C的童鞋门遇到的最头疼的问题了。今天给大家提供四种解决方法供借鉴。1、在scanf()中使用’\n’屏蔽回车符号。scanf("%d\n",&n); //使用’\n’过滤回车scanf("%c",&c);2、在scanf()格式串最前面添加空格,...原创 2019-03-03 16:24:06 · 8019 阅读 · 1 评论 -
进制转换器(栈实现)
#include<stdio.h>#include<stdlib.h>#include<string.h>int TenNum(char a[],int B);//将B进制转成十进制数void Numchange(int m,int B);//将十进制数转成需要的进制数int push(char *a,int top,char c){if(top&...原创 2019-03-03 16:31:19 · 326 阅读 · 0 评论 -
括号匹配算法(栈实现)
#include<stdio.h>#include<stdlib.h>#define Stack_size 10000typedef struct{char elem[Stack_size];int top;}seqStack;void initStack(seqStack *s){s->top=-1;}int isEmpty(seqStack *...原创 2019-03-03 17:29:22 · 461 阅读 · 0 评论 -
最长数字子串
输入一个字符串,求最长的数字字符串#include<iostream>#include<string>#include<vector>#include<string.h>using namespace std;int main(){ string str; cin>>str; vector<string> ...原创 2019-03-28 11:08:45 · 659 阅读 · 0 评论