自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 问答 (1)
  • 收藏
  • 关注

原创 利用树的层序遍历创建一颗二叉链表树

创建任意一颗二叉链表树,在输入序列中标明每一个树结点及其两个孩子结点,若孩子结点为空,需要用特殊值标记。如,若要构造图中的二叉树,

2021-06-10 16:31:59 489

原创 在二叉树中输出值为x的结点的所有祖先结点,假设值为x的结点不多于1个

typedef struct TreeNode{ int data; struct TreeNode* left, *right;}TNode,*BTree;//由后序遍历的递归算法改编bool PostOrder(BTree T, int x){ if (T != NULL) { //分别在T的左右子树递归的查找结点值为x的孩子结点 bool b1 = PostOrder(T->left, x); bool b2 = PostOrder(T->r.

2021-06-08 16:26:37 1833 1

原创 删除二叉树中所有以x为值的子树

#include<stdio.h>#include<stdlib.h>typedef struct TreeNode{ int data; struct TreeNode* left, *right;}TNode,*BTree;void PreOrder(BTree T){ if (T != NULL) { printf("%d ", T->data); PreOrder(T->left); PreOrder(T->righ.

2021-06-08 15:36:48 1374

原创 求二叉树先序序列中第k个结点的值

#include<stdio.h>#include<stdlib.h>typedef struct TreeNode{ int data; struct TreeNode* left, *right;}TNode,*BTree;int i = 1;//直接在先序遍历的递归算法中进行改编//全局变量i也可以作为函数参数的引用,即int&i。void PreOrder2(BTree T, int k){ if (T != NULL&&a.

2021-06-08 15:02:55 2659 4

原创 使用队列创建一颗完全二叉树(C++语言)

#include<stdio.h>#include<stdlib.h>#pragma region 队列操作//队列结点定义,void*保存指向树结点的指针typedef struct QueueNode{ void* data; struct QueueNode* next;}QNode;typedef struct Queue{ QNode* front, * rear;};//初始化队列,使用头结点void InitQueue.

2021-06-03 16:04:35 1070

原创 2019年考研计算机统考408真题算法题

题目如图所示算法思想:首先将链表从中间断开,分成前后两个小链表,再将后链表逆置,然后插入到前链表中。具体代码如下#include<stdio.h>#include<stdlib.h>typedef struct DNode{ int data; struct DNode* next;}Node,*Link;void Create(Link& link){ link = (Link)malloc(sizeof(Node)

2021-06-02 15:58:24 2243

原创 2013年考研计算机统考408真题算法题

题目如图所示

2021-05-28 15:24:45 1914 3

原创 2011年考研计算机统考408真题算法题

题目如图所示算法思想(使用c++语言):(1)利用带头结点的单链表存储升序序列。(2)计算中位数K的位置,(3)由于序列递增有序,通过循环比较两个链表结点的值,将结点值较小的结点所在链表移到下一结点,并递减K,当K为0时即找到中位数注:当然可以用两个一维数组,计算中位数K的位置,通过改变下标来找到中位数,我这里是想多多练习单链表,408在链表上出编程题蛮多的,同时带头结点的单链表处理起来方便一些。#include<stdio.h>#include<std

2021-05-27 15:46:04 2006 1

原创 一维数组的循环右移与循环左移

本人代码如下,欢迎大佬指正//循环右移void Func(int arr[], int len, int k){ int t1 = arr[0], t2; for (int j = 0; j < k; j++) { for (int i = 1; i < len; i++) { t2 = arr[i]; arr[i] = t1; t1 = t2; } arr[0] = t1; }}//循环左移void Func1(int arr[],

2021-05-26 15:35:13 998

原创 反复找出循环单链表中的最小结点,打印并删除,直到表空为止

个人代码如下,欢迎大佬指正#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;void Func(Link& link){ Node* p, *pre,*q; //循环每次找到一个最小的结点,然后删掉,故这里只要判断是不是空表 while (link->next !=

2021-05-20 15:34:45 485

原创 将两个升序的单链表合并成一个降序的单链表,要求归并后的单链表是原先链表中的一个 C++语言

条件也可改为“要求空间复杂度O(1)”。代码如下,欢迎大佬指正。#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;//初始化一个链表void Init(Link& link){ link = (Link)malloc(sizeof(Node)); link->next

2021-05-17 15:07:28 1696

原创 在一个递增有序的单链表中,去掉数值相同的元素

代码如下,欢迎大佬指正#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;//链表初始化void Init(Link& link){ link = (Link)malloc(sizeof(Node)); link->next = NULL;}void Func(Lin

2021-05-16 12:03:39 643

原创 将一个带头结点的单链表分成两个带头结点的单链表,使得一个含有原链表的所有奇结点,一个含有原链表的所有偶节点,且不改变原序

代码如下,欢迎大佬指正。#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;//将link链表分解,采用尾插法来保持原有顺序void Func(Link& link, Link& link1, Link& link2){ int k = 1;//处理奇结点偶节点

2021-05-15 12:20:37 839

原创 通过带头结点的单链表L实现从尾到头反向输出每个结点的值

个人代码如下,采用头插法建立一个新链表,时间复杂度O(N),空间复杂度O(N)。#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;//初始化一个带头结点的链表void Init(Link& link){ link = (Link)malloc(sizeof(Node)); li

2021-05-13 17:01:28 2327

原创 在带头结点的单链表中删除所有值为x的结点

个人代码如下所示,欢迎大佬指正。#include<stdio.h>#include<stdlib.h>typedef struct LNode{ int data; struct LNode* next;}Node,*Link;//删除值为x的结点void Delete(Link& link, int x){ Node* p = link,*q; while (p->next!=NULL) {

2021-05-13 16:13:19 6601 6

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除