数据结构与算法
文章平均质量分 92
vivi_and_qiao
唯有爱可以战胜一切
展开
-
C语言返回子串在字符串数组中第一次出现的下标
int index(char *source,char *child){ if(strstr(source,child)==NULL) { return -1; } else { char *tem=strstr(source,child) return (&tem)-&(*source)-1;//...原创 2019-06-29 12:09:27 · 2572 阅读 · 0 评论 -
删除二叉树中以元素值为x的结点为根的子树,并释放其空间
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;问题求解:void del_release11(Tnode *root,char k){ //应该采取后序遍历的方式 if (!root) retur...原创 2018-09-21 11:37:46 · 5770 阅读 · 5 评论 -
求二叉树先序遍历序列中第k各个结点的值
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;问题求解:int count = 1; char getvalue10(Tnode *root, int k){ char ch; if (!root)...原创 2018-09-21 11:37:54 · 5432 阅读 · 0 评论 -
将二叉树所有结点的左右子树相交换
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;问题求解:void swaplrtree9(Tnode *root){ //思路:考虑用递归进行 Tnode *tem = root->lnode;...原创 2018-09-21 11:38:00 · 3453 阅读 · 0 评论 -
计算给定二叉树的所有分支结点个数
二叉树存储结构定义:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;问题求解:int doublebranchcount8(Tnode *root){//思路1:采用遍历算法遍历每一个结点,如果它既存在左孩子又存在右孩子则...原创 2018-09-21 11:38:15 · 5989 阅读 · 0 评论 -
判别给定二叉树是否是完全二叉树
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;队列定义:#include "stdafx.h"#include<stdio.h>#include<s原创 2018-09-21 11:38:33 · 1347 阅读 · 0 评论 -
根据先序序列和中序序列创建二叉树——递归及非递归实现详细讲解
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;递归创建二叉树:Tnode *createtree6(char a[], int n1,int m1,char b[],int n2,int m2){ //...原创 2018-09-21 11:38:53 · 9432 阅读 · 0 评论 -
递归与非递归求二叉链表存储的二叉树的高度
定义队列:#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 500struct queue{ type member[max];原创 2018-09-21 11:39:03 · 2352 阅读 · 0 评论 -
二叉树自下而上,从右到左的层次遍历
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 500struct queue{ type member[max]; int tail,head;};void initqueue(que原创 2018-09-21 11:39:23 · 3373 阅读 · 0 评论 -
二叉树的先序,中序,后序遍历的地递归与非递归的实现
#include "stdafx.h"#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include"stack.h"#include &a原创 2018-09-21 11:42:39 · 301 阅读 · 0 评论 -
队列的定义及基本操作
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 500struct queue{ type member[max]; int tail,head;};void initqueue(que原创 2018-09-22 19:31:22 · 192 阅读 · 0 评论 -
栈的定义及基本操作
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 50;typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *原创 2018-09-22 19:31:31 · 311 阅读 · 0 评论 -
利用栈实现递归函数的非递归计算
题目描述:栈的实现及栈的基本操作:#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 50;typedef char type;t原创 2018-09-22 19:31:39 · 3805 阅读 · 2 评论 -
栈的实现及括号匹配
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<cstring>#define max 50;typedef char type;typedef struct{ type data[50]; int top;}stack;void initialsta...原创 2018-09-20 12:04:52 · 189 阅读 · 0 评论 -
非循环双向链表增加访问频度域freq,每进行一次Locate(L,x)运算,freq加一。使链表中结点保持按访问频度非增的顺序排列,同时最近访问的结点排在频度相同的结点前面
typedef struct dnode20{ int data, fre; dnode20 *lnext, *rnext;}Dnode20;void printDnode20(Dnode20 *h){ Dnode20 *p = h->rnext; while (p) { printf("%d fre:%d ", p-...原创 2018-09-20 12:01:09 · 1705 阅读 · 0 评论 -
反复输出循环单链表中值最小的结点并删除,直至链表为空
#include "stdafx.h"#include<stdio.h> #include<malloc.h> #include<stdlib.h>typedef int type;typedef struct lnode //定义链表结点的数据结构 { int data; struct lnode *next;}Lnode;ty...原创 2018-09-20 11:34:24 · 1521 阅读 · 3 评论 -
求二叉树带权路径长度——递归与非递归实现
二叉树存储结构:typedef struct Tnode{ char data; struct Tnode *lnode; struct Tnode *rnode;}Tnode;typedef Tnode* type;队列的实现:struct queue{ type member[max]; int tail,head;};void initqueue(queue ...原创 2018-09-21 11:37:30 · 2205 阅读 · 0 评论 -
课程设计之停车场管理系统C语言实现
1.课程设计内容:设有一个可以停放n(n>=5)辆汽车的狭长停车场,它只有一个大门可以供车辆进出。车辆按到达停车场时间的早晚依次从停车场最里面向大门口处停放(最先到达的第一辆车放在停车场的最里面)。如果停车场已放满n辆车,则后来的车辆只能在停车场大门外的便道上等待,一旦停车场内有车开走,则排在便道上的第一辆车就进入停车场。停车场内如有某辆车要开走,在他之后进入停车场的车都必须先退出停车场为...原创 2019-01-03 17:03:54 · 8698 阅读 · 18 评论 -
把孩子双亲表示的树转(或其构成的森林)换为对应的二叉树,并对二叉树中序,先序,后序递归与非递归6种方式遍历C语言实现
将树转换为二叉树的方法如下:如图所示:程序运行示例:一般树转换为二叉树后的结果:运行结果图:如图所示,将图一所示的一般树(其任意节点都可以有任意多的子节点)转换为图二所示的二叉树(每个节点最多只能有两个叶子结点),程序实现的过程为:首先创建一般树的孩子双亲表示法存储结构:typedef struct child_parent_tnode//创建孩子双亲表示法树的节点 ...原创 2019-01-01 18:12:25 · 3563 阅读 · 14 评论 -
简单的文本编辑器C语言实现
1.程序功能: 1、文章内容输入(可输入多行文字) 2、显示当前文章内容 3、进入文章内容统计菜单(包括总字数,大写字母个数,小写字母个数,数字个数,标点符号个数) 4、查找文章中的字符或者字符串(显示出现在某行某列) 5、删除文章中的字符或者字符串(删除文章中指定的字符串) 6、向文章中插入字符或者字符串(在指定行列插入指定字符串) 7、替......原创 2020-05-31 00:24:55 · 13168 阅读 · 14 评论 -
有向图输入邻接矩阵用弗洛伊德算法求各定点间最短路径C语言实现
程序运行截图:程序源码下载:有向图输入邻接矩阵用弗洛伊德算法求各定点间最短路径C语言实现源码下载原创 2019-06-27 16:37:25 · 1130 阅读 · 0 评论 -
C语言实现文件系统模拟器
1.可使用的命令:dir 列出当前目录下所有目录项cd 查看当前路径cd dir 当前目录变为str所表示路径的目录cd … 当前目录变为当前目录的父目录mkdir str 在当前目录下创建一个名为str的子目录mkfile str 在当前目录下创建一个名为str的文件delete str 删除当前目录下名为str的目录...原创 2019-06-08 13:08:45 · 3405 阅读 · 0 评论 -
C语言实现文件系统模拟器
1.问题描述:编写程序,模拟命令行的常用文件系统管理命令,具体要求如下:2.软件运行截图:3.关于问题的解答:1.树中的每个节点都包括第一个孩子域,双亲域,下一个兄弟域,每增加一个孩子时,传入双亲域,若是第一个孩子就链在第一个孩子域上,若是第二个孩子,就链接在第一个孩子的下一个兄弟域,若是第三个孩子,那就链接在第二个孩子的下一个兄弟域,依次类推,将所有新建的节点链接在上一个兄弟的下一...原创 2019-06-28 22:07:05 · 853 阅读 · 1 评论 -
字节跳动笔试题-判断能否拆开一个字符串,使拆开成的字符串集合是给定字符串集合的子集-c#实现
1.问题描述:注:此程序经过测试,正确率为70%,仅供参考,欢迎评论指正。2.c#实现:string s1 = Console.ReadLine(); string[] s2 = Console.ReadLine().Split(' '); while (s1 != "") { for (...原创 2019-06-01 21:40:03 · 629 阅读 · 0 评论 -
用栈判断输入字符串是否为回文字符串
//栈数据结构定义#include<stdio.h>#include<stdlib.h>#include<string.h>#define FULL 10000#define MAX 10000struct elem { char d; struct elem *next;};struct stack { //定义栈...原创 2019-05-13 15:15:21 · 5369 阅读 · 4 评论 -
根据二叉树的先序,中序,后序遍历序列将其线索化并在线索二叉树中查找前驱后继结点
#include "stdafx.h"#include<stdio.h>#include<stdlib.h>#include<string.h>typedef char type;typedef struct threaded_binary_tree_node{ type data; bool ltag; threaded_binary_tre...原创 2019-05-13 14:05:30 · 3200 阅读 · 1 评论 -
二叉查找树的创建插入删除遍历的递归实现与非递归C语言实现
#include<stdio.h>#include<stdlib.h>typedef int type; typedef struct lnode{ type key; struct lnode *lchild ,*rchild; }node ,*ntree; void insertbst(ntree *bstree,type k) { if(bs...原创 2019-05-13 13:59:17 · 569 阅读 · 0 评论 -
字节跳动笔试题-选择景点使评分最大c#语言实现
1.题目描述:2.c#实现:注:此代码并不能保证题目的完整解答,仅供交流学习使用,若有错误或改进之处希望在评论区留言,相互交流,共同进步! int N; N = int.Parse(Console.ReadLine()); int[] a = new int[N]; string[] b = ne...原创 2019-05-25 22:03:53 · 669 阅读 · 0 评论 -
字节跳动笔试题-求数组中1组成的区块个数c#实现
1.题目描述:2.题目理解:3.c#语言实现:using System;using System.Collections;using System.Collections.Generic;using System.Text;namespace bytedance{ class jiaobiao { int i, j; publi...原创 2019-05-25 21:50:54 · 760 阅读 · 0 评论 -
360笔试题-移动排列-c#语言实现
1.题目描述:给定一个排列[A1,A2,A3,…,AN],每次可以将排列的第一个数移动到末尾,假设经过若干次移动后得到新的排列[B1,B2,B3,…,BN],求|B1-1|+|B2-2|+|B3-3|+…+|BN-N|的最小值。2.题目求解using System;using System.Collections.Generic;using System.Text;namespace...原创 2019-05-20 13:30:00 · 538 阅读 · 0 评论 -
从文本文件中读入若干个单词将频率高的输出到另一个文件中
题目描述:文本文件input.txt由若干英文单词和分隔符(空格,回车,换行)构成要求:根据如下说明统计不同单词出现的次数(频度)。将统计结果按出现频度从高到低排序,并将出现频度大于5的单词及其频度输出到文件output.txt中。文件格式如下所示: to, 10 our, 8 home, 5 yes, 5说明:(1) 多个连续的分隔符被视为一个分隔...原创 2019-02-25 21:26:20 · 885 阅读 · 0 评论 -
先序输入构建将二叉树_并将二叉树转换为孩子兄弟双亲表示的一般树所构成的森林c语言实现
二叉树转换为森林的方法:(1)加线:若某结点是其双亲的左孩子,则把该节点的右孩子、右孩子的右孩子·····都与该结点的双亲结点间加上连线。(2)删线:删掉原来二叉树中所有双亲结点与右孩子间的连线。(3)旋转调整:旋转、整理由(1)(2)两步得到的各种树,使之结构清晰,层次分明。又如图所示:C语言代码实现:1.二叉树存储结构:ypedef struct binarytreenode...原创 2019-01-09 13:31:18 · 2199 阅读 · 0 评论 -
链接两个循环单链表,并保持循环链表形式
#include "stdafx.h"#include<stdio.h> #include<malloc.h> #include<stdlib.h>typedef int type;typedef struct lnode //定义链表结点的数据结构 { int data; struct lnode *next;}Lnode;ty...原创 2018-09-20 11:30:19 · 608 阅读 · 0 评论 -
判断带头结点的循环双链表是否对称
#include "stdafx.h"#include<stdio.h> #include<malloc.h> #include<stdlib.h>typedef int type;typedef struct lnode //定义链表结点的数据结构 { int data; struct lnode *next;}Lnode;ty...原创 2018-09-20 11:27:05 · 6966 阅读 · 0 评论 -
顺序表中查找值为x的元素,将其与后继元素相交换,若找不到将其插入表中并使表递增有序
typedef int type;typedef struct{ int len; type data[MAX];}sqList;bool isposorder(sqList *a)//非题{ for(int i=1;i<a->len;i++) if(a->data[i]<a->data[i-1]) return...原创 2018-09-18 14:51:16 · 1739 阅读 · 0 评论 -
将两个有序顺序表合成一个新的有序顺序表,使表中所有元素的值均不同
typedef int type;typedef struct{ int len; type data[MAX];}sqList;bool isposorder(sqList *a)//非题{ for(int i=1;i<a->len;i++) if(a->data[i]<a->data[i-1]) return ...原创 2018-09-18 14:44:21 · 2172 阅读 · 0 评论 -
从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同
typedef int type;typedef struct{ int len; type data[MAX];}sqList;int delsame6(sqList *a){ int k=0; for(int i=1;i<a->len;i++) if(a->data[i]>a->data[i-1])//若要实现逆序的顺...原创 2018-09-18 14:41:34 · 6897 阅读 · 0 评论 -
从有序顺序表中删除值在给定s与t之间的所有元素
typedef int type;typedef struct{ int len; type data[MAX];}sqList;int delsure4(sqList *a,type min,type max){ int k; if(min>=max||a->len<=0) return -1; for(int i=0;i...原创 2018-09-18 14:38:38 · 3537 阅读 · 0 评论 -
删除长度为n的顺序表中所有值为x的元素,要求时间复杂度0(n),空间复杂度为0(1)
typedef struct{ int len; type data[MAX];}sqList;int delsameele3(sqList *a,type x) { //每遍历一个元素时都考虑其向前移动的位数 int k=0; for(int i=0;i<a->len;i++) if(a->data[i]!=x) a-...原创 2018-09-18 14:35:08 · 5570 阅读 · 1 评论 -
将顺序表所有元素逆置,要求算法空间复杂度为O(1)
typedef struct{ int len; type data[MAX];}sqList;int nizhi2(sqList *a){ if(a->len<0) return -1; for(int i=0;i<=a->len/2;i++) { a->data[i]+=a->data[a...原创 2018-09-18 14:31:49 · 7159 阅读 · 5 评论