数据结构
carnzy
日常刷题
展开
-
算法:求二叉树高度
【代码】算法:求二叉树高度。原创 2022-11-09 21:12:06 · 799 阅读 · 0 评论 -
对一个排序去重。要求:有重复的关键字,保留后一个,删除前面的
void DeleteRepeat(int & A [ ] , i , j , k [ ] , t) //k[]存放被删除的元素 {else {i < j;} } } }原创 2022-11-09 21:06:41 · 425 阅读 · 1 评论 -
7.1查找的基本概念
1)查找在数据集合中寻找满足某种条件的数据元素的过程称为查找。2)查找表(查找结构)用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成,可以是一个数组或链表等数据类型。对查找表经常进行的操作一般有4种:查询某个特定的数据元素是否在查找表中检索满足条件的某个特定的数据元素的各种属性在查找表中插入一个数据元素从查找表中删除某个数据元素3)静态查找表若一个查找表的操作只涉及上述操作1和2,则无须动态地修改查找表,此类查找表称为静态查找表。与此对应,需要动态地插入或删除的查找原创 2022-05-16 15:50:34 · 186 阅读 · 0 评论 -
线性表(a1,a2,a3,...,an)中的元素递增有序且按顺序存储于计算机内。要求设计一个算法,完成用最少时间在表中查找数值为x的元素,若找到,则将其与后继元素位置相交换,若找不到,则将其有序插入。
算法思想:顺序存储的线性表递增有序,可以顺序查找,也可以折半查找。题目要求“用最少的时间在表中查找数值为x的元素”,这里应使用折半查找法。本题代码如下://C语言版本#include<iostream>using namespace std;typedef int ElemType;void SearchExchangeInsert(ElemType A[],ElemType x,int n) { int low=0,high=n-1,mid; //low和hig原创 2022-03-25 17:01:05 · 2983 阅读 · 12 评论 -
已知在一维数组A[m+n]中依次存放两个线性表(a1,a2,a3,...,am)和(b1,b2,b3,...,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将线性表b放在线性表a前
算法思想:先将数组A[m+n]中的全部元素(a1,a2,a3,…,am,b1,b2,b3,…,bn)原地逆置为(bn,…,b3,b2,b1,am,…,a3,a2,a1),再对前n个元素和后m个元素分别使用逆置算法,即可得到(b1,b2,b3,…,bn,a1,a2,a3…,am),从而实现顺序表的位置互换。本题代码如下:.........原创 2022-03-25 12:57:22 · 1561 阅读 · 0 评论 -
将两个有序顺序表合并为一个新的有序顺序表,并由函数返回结果顺序表。
算法思想:首先,按顺序不断取下两个顺序表表头较小的结点存入新的顺序表中。然后,看哪个表还有剩余将剩下的部分加到新的顺序表后面。本题代码如下:#include<iostream>using namespace std;#define InitSize 50typedef int ElemType;typedef struct{ ElemType *data; int length, MaxSize;}SeqList;void InitList(SeqList &L原创 2022-03-24 11:19:31 · 1837 阅读 · 2 评论 -
从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
#include<iostream>using namespace std;#define MaxSize 50typedef int ElemType;typedef struct { int data[MaxSize]; int length;}SeqList;bool Delete_Same(SeqList& L){ if(L.length==0){ return false; } int i,j;原创 2022-03-24 09:45:35 · 894 阅读 · 0 评论 -
从顺序表中删除其值在给定值s与t之间(包含s和t,要求s<t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
#include<iostream>using namespace std;#define MaxSize 50typedef int ElemType;typedef struct { int data[MaxSize]; int length;}sqList;bool Del_s_t (sqList &L, ElemType s, ElemType t) { //删除顺序表L中值在给定值s与t之间(要求s<t)的所有元素 int i,原创 2022-03-24 09:22:29 · 739 阅读 · 2 评论 -
从有序顺序表中删除其值在给定值s与t之间(要求s < t)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。
#include<iostream>using namespace std;#define MaxSize 50typedef int ElemType;typedef struct { int data[MaxSize]; int length;}sqList;bool Del_s_t2(sqList &L, ElemType s, ElemType t){ //删除有序顺序表L中值在给定值s与t之间的所有元素 int i,j; i原创 2022-03-23 20:40:23 · 911 阅读 · 4 评论 -
对长度为n的顺序表L,编写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为x的数据元素。
//删除顺序表中所有值为x的元素#include <stdio.h>#define MaxSize 50typedef struct { int data[MaxSize]; int length;}SqList; void del_x_1(SqList &L,int x) { int k = 0; //记录值不等于x的元素个数 for(int i = 0; i < L.length; i++) //若L.data[i] = x 则不进入循环直接i++原创 2022-03-23 20:31:50 · 1543 阅读 · 0 评论 -
设计一个高效算法,将顺序表L的所有元素逆置,要求算法的空间复杂度为O(1)
#include<cstdio>#define MaxSize 50typedef int ElemType;typedef struct { ElemType data[MaxSize]; int length;}SqList; void Reverse(SqList &L) { ElemType temp; //辅助变量 for(int i = 0; i < L.length/2; i++) { temp = L.data[i]; L.原创 2022-03-23 18:48:45 · 1790 阅读 · 0 评论 -
从顺序表中删除具有最小的元素(假设唯一)并由函数返回被删元素的值。空出的位置由最后一个元素填补,若顺序表为空,则显示出错信息并退出运行。
#include<stdio.h>#define MaxSize 5using namespace std;typedef struct { int data[MaxSize]; int length; }sqList; bool Del_Min(sqList &L,int &e){ if(L.length==0){ return false; }原创 2022-03-23 18:12:52 · 266 阅读 · 0 评论 -
对完全二叉树的理解
图中到12号节点只是一个特例它最小可以到8,最大可以到满原创 2021-08-14 16:52:12 · 101 阅读 · 0 评论