![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
DDR内存测试
一棹春风一叶舟,一纶茧缕一轻钩。花满渚,酒满瓯,万顷波中得自由。
展开
-
请用递归法实现单向链表的反转,即头结点指向尾结点,尾结点指向头结点
typedef struct _Node { int data; struct _Node * next; } Node;Node * Node_reverse(Node *node) { if (node == NULL) return NULL; if (node->next == NULL) return node; Node * ...原创 2019-03-09 16:59:21 · 205 阅读 · 0 评论 -
问:什么是满二叉树?什么是完全二叉树?什么是平衡二叉树?什么是二叉查找树?
满二叉树 除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。 完全二叉树完全二叉树是一种特殊的二叉树,满足...原创 2019-03-09 09:56:11 · 8926 阅读 · 2 评论 -
用C/C++编程实现冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort)是一种典型的交换排序算法,通过交换数据元素的位置进行排序。int temp;//外层循环是排序的趟数for (int i = 0; i < arrays.length - 1 ; i++) {//内层循环是当前趟数需要比较的次数for (int j = i+1; j < arrays.length; j++) {//前一...原创 2019-03-06 21:25:58 · 938 阅读 · 0 评论 -
用C/C++编程实现直接选择排序
直接选择排序算法思想:在冒泡排序上做了优化,减少了交换次数,在首轮选择最大的数放在第一项,一轮之后第一项是有序的了,第二轮从第二项开始选择最大的数放在第二项,以此类推,直到整个数组完全有序。public void select_sort(){ // 对应位置的数组下标 int max; // 定义临时变量 int temp; for (int i...原创 2019-03-06 21:27:27 · 281 阅读 · 0 评论 -
用C/C++编程实现堆排序
堆排序的基本思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;void adjust(int arr[], int len, in...转载 2019-03-16 11:12:11 · 305 阅读 · 0 评论 -
用C/C++编程实现插入排序
插入排序算法思想:和前俩种排序不同,插入排序在排序过程中是局部有序,随着插入项的增多,有序部分的项的位置会发生改变,而冒泡排序和选择排序每轮确定的项数的位置是永远不变的。在首轮,选择第二项作为插入项,然后取出这一项放在一个变量中,和前一项比较而且小,则前一项后移到第二项的位置,然后第二项也就是插入项放在前一项的位置,第二轮选择第三项作为插入项然后取出和前一项也就是第二项比较如果小,第二项后移到插入...原创 2019-03-06 21:22:08 · 336 阅读 · 0 评论 -
用C/C++编程实现希尔排序
希尔算法基本思想:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。操作方法:选择一个增量序列t1,t2,…,tk,其中ti>tj,tk=1;按增量序列个数k,对序列进行k 趟排序;每趟排序,根据对应的增量ti,将待排序列分割成若干长度为m 的子序列,分别对各子表进行直接插入排序。仅增...原创 2019-03-06 21:23:16 · 292 阅读 · 0 评论 -
用C/C++编程实现快速排序
快速排序的基本思想:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。/******************************************************************/...原创 2019-03-06 21:24:20 · 244 阅读 · 0 评论 -
各种常用排序算法的比较
原创 2019-03-06 21:25:34 · 143 阅读 · 0 评论 -
问:什么是最小堆?什么是最大堆?在堆中怎么插入或删除一个元素?
答:最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。最小堆:根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。 最大堆的插入最大堆的插入的思想就是先在最后的结点添加一个元素,然后沿着树上升。跟最大堆的初始化大致相同。MaxHeap&...原创 2019-03-09 10:35:39 · 3342 阅读 · 0 评论 -
关于结构体的位域(位段)的字节数
一、位域的大小与对齐 如果结构体中含有位域(bit-field),那么VC中准则是: 1) 如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止; 2) 如果相邻位域字段的类型相同,但其位宽之和大于类型的sizeof大小,则后面的字段将从新的存储单元开始,其偏移量为其类型大小的整数倍; 3) 如果...原创 2019-03-03 12:14:27 · 1692 阅读 · 0 评论 -
请找出单向链表的数据元素值最大的结点。
typedef struct _Node {int data;struct _Node * next;} Node;Node* SearchMax(Node* pHead)//pHead为头结点{Node* p1;Node* p2;p1 = pHead->Next;p2 = p1->Next;whi...原创 2019-03-09 17:01:23 · 1288 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请找出连续三个结点的数值和最小的值为多少。
typedef struct _Node {int data;struct _Node * next;} NODE;int Search3NodeMax(NODE* pHead)//pHead为头结点{Node* p1;NODE* p2;NODE* p3;int mix=-1;if(NULL == pHead...原创 2019-03-11 10:26:41 · 310 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请找出连续三个结点的数值和最大的值为多少。
typedef struct _Node { int data; struct _Node * next;} NODE;int Search3NodeMax(NODE* pHead)//pHead为头结点{ Node* p1; NODE* p2; NODE* p3; int max=0; if(NULL == pHead)...原创 2019-03-11 10:17:18 · 327 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请取出倒数第N个结点的数据。
typedef struct node{int data;struct Node * next;} NODE,*PNODE;NODE* Findlastth(NODE*head,int N) //找寻链表中倒数第N个节点{ int k=N; NODE*p,*q; p=q=head->next;...原创 2019-03-09 17:12:19 · 593 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请在包含指定数据元素值为K的结点前插入一个新结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* insert_after_node(NODE* Head,const int K){NODE* p = Head;NODE* q = (NODE* )malloc(sizeof(NODE)); ...原创 2019-03-09 17:45:32 · 1644 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请在包含指定数据元素值为K的结点后插入一个新结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* insert_after_node(NODE* Head,const int K){ NODE* p = Head; NODE* q = (NODE* )malloc(NODE); if(NU...原创 2019-03-09 17:34:53 · 627 阅读 · 0 评论 -
已知一个单向链表的头指针pHead,请删除包含指定数据元素K的结点。
typedef struct _Node {int data;struct _Node * next;} NODE;NODE* delete_list_node(NODE* Head,const int K){NODE* p = (NODE* )malloc(sizeof(NODE));NODE* q = (NODE* )ma...原创 2019-03-09 17:57:09 · 728 阅读 · 0 评论 -
使用后插法创建一个有n个结点的单向链表
typedef struct Node {int data;struct Node * next;} NODE;void linklist_create_with_taiI_insert(int* data,unsigned short n){ NODE* pHead = (Node*)malloc(sizeof(Node)); NO...原创 2019-03-09 17:20:16 · 2990 阅读 · 0 评论 -
二叉查找树与红黑树(Binary Search Tree and R-B Tree)
参考:https://www.cnblogs.com/skywang12345/p/3576328.htmlhttp://www.cnblogs.com/skywang12345/p/3245399.html定义:二叉查找树(Binary Search Tree),又被称为二叉搜索树。设x为二叉查找树中的一个结点...原创 2019-04-04 14:48:31 · 217 阅读 · 0 评论