
数据结构
基于C++的数据结构以及算法
Blakie
You got a dream, you gotta protect it.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构(C语言版 第2版)课后习题答案 严蔚敏 编著
链接:https://pan.baidu.com/s/1zKE0Rsry3B6QR1jpFuOl9A提取码:cpks当初学数据结构时老师经常布置课后习题,最开始毫无头绪,想着要是有参考答案该多好,结果想办法搞到了答案。不过老师布置的习题仅仅是和书上的类似,并不完全相同,不过这样也正好锻炼了我们的编程思维。照搬照抄并不好,但有个参考也不至于我们毫无头绪,在这里分享给大家,希望对大家有所帮助!...原创 2020-02-09 16:36:18 · 6483 阅读 · 4 评论 -
循环队列的实现
语言:C++#include <iostream>using namespace std;#define MAXQSIZE 100typedef struct{ int *base; int front; int rear;}SqQueue;//初始化void InitQueue(SqQueue &Q){ //构造一个空...原创 2018-10-29 12:58:07 · 244 阅读 · 0 评论 -
链队的实现
语言:C++#include <iostream>using namespace std;typedef struct QNode{ int data; struct QNode *next;}QNode,*QueuePtr;typedef struct{ QueuePtr front; QueuePtr rear;}LinkQue...原创 2018-10-30 10:00:15 · 211 阅读 · 0 评论 -
使用栈实现进制转换
要求:十进制转八进制//其它进制的话,只需做下稍微的修改#include <iostream>using namespace std;typedef struct StackNode{ int data; struct StackNode *next;}StackNode,*LinkStack;int InitStack(LinkStack &S)...原创 2018-11-05 10:23:15 · 421 阅读 · 0 评论 -
使用递归实现进制转换
要求:十进制转八进制//其它进制的话只需做下稍微的修改#include <iostream>using namespace std;int fun(int x){ if(x<8) return x; return x%8+10*fun(x/8);}int main(){ int x; cout<<"欢迎使用进制转换(10进制转8进制)...原创 2018-11-05 10:24:46 · 1309 阅读 · 1 评论 -
设任意n个整数存放于数组A[1..n]中,试编写算法,将所有正数排在所有负数前面(要求:算法时间复杂度为O(n))。
注意数组的实际长度#include <iostream>using namespace std;void sort(int A[],int n){ int i=0;//数组的头下标 int j,x; j=n-1;//数组的尾下标 while (i<j) { while (i<j&&A[i]...原创 2018-11-12 10:57:03 · 15890 阅读 · 3 评论 -
写一个递归算法来实现字符串逆序存储,要求不另设串存储空间。
递归算法中需要使用一个静态变量存储数组下标#include <iostream>using namespace std;void invert(char A[]){ char ch; static int i=0;//利用静态变量存储数组下标 cin>>ch; if(ch!='#') { invert(A...原创 2018-11-12 11:00:01 · 4616 阅读 · 1 评论 -
写一个算法,在输入字符串中查看任意字符出现的频度(字符串中的合法字符为大写字母、小写字母与数字)
#include <iostream>using namespace std;int main(){ int A[62]={0}; char ch;char c; cout<<"请输入一个字符串,由大写字母小写字母与数字组成,以'#'结尾:"<<endl; while(ch!='#') { cin>>ch; //数组中...原创 2018-11-12 11:04:58 · 2131 阅读 · 0 评论 -
二叉树的创建、遍历以及部分算法
首先创建一棵二叉树。遍历(非层次)的递归算法代码比较简洁,非递归算法则需要使用栈。层次遍历则需要使用队列。需要注意栈与队列的存储结构需要使用BiTNode*类型(二叉树的结点类型)。因为遍历时需要把结点的指针出入栈与队列。代码如下:#include <iostream>using namespace std;//二叉树的二叉链表存储表示typedef str...原创 2018-11-23 21:04:18 · 259 阅读 · 0 评论 -
采用邻接矩阵表示法创建无向网
"∞"可以在word中寻找><#include <iostream>using namespace std;//图的邻接矩阵存储表示#define MaxInt 32767#define MVNum 100typedef struct{ char vexs[MVNum]; int arcs [MVNum][MVNum]; int v...原创 2018-12-03 10:47:20 · 8713 阅读 · 3 评论 -
使用邻接矩阵表示法创建无向图以及部分操作
#include <iostream>using namespace std;//图的邻接矩阵存储表示#define MaxInt 32767#define MVNum 100typedef struct{ char vexs[MVNum]; int arcs [MVNum][MVNum]; int vexnum,arcnum;}AMGraph;...原创 2018-12-13 20:07:53 · 6788 阅读 · 0 评论 -
使用邻接表表示法创建无向图以及部分操作
#include <iostream>using namespace std;//图的邻接表存储表示#define MVNum 100typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc; //OtherInfo info;}ArcNode;typedef struct VNode...原创 2018-12-13 20:09:14 · 3273 阅读 · 0 评论 -
顺序查找
#include <iostream>using namespace std;typedef struct{ int key;}ElemType;typedef struct{ ElemType *R; int length;}SSTable;void Initial_table(SSTable &ST){ ST.R=new ElemType...原创 2018-12-17 10:48:16 · 186 阅读 · 1 评论 -
折半查找
#include <iostream>using namespace std;typedef struct{ int key;}ElemType;typedef struct{ ElemType *R; int length;}SSTable;void Initial_table(SSTable &ST){ ST.R=new ElemType...原创 2018-12-17 10:48:53 · 254 阅读 · 0 评论 -
二叉排序树
#include <iostream>using namespace std;typedef struct{ int key;}ElemType;typedef struct BSTNode{ ElemType data; struct BSTNode *lchild,*rchild;}BSTNode,*BSTree;void InsertBST(B...原创 2018-12-17 10:50:11 · 240 阅读 · 0 评论 -
链栈的实现
语言:C++#include <iostream>using namespace std;typedef struct StackNode{ int data; struct StackNode *next;}StackNode,*LinkStack;//初始化void InitStack(LinkStack &S){ //构造一...原创 2018-10-29 12:56:44 · 173 阅读 · 0 评论 -
顺序栈的实现
语言:C++#include <iostream>using namespace std;#define MAXSIZE 100typedef struct{ int *base; int *top;}SqStack;//初始化void InitStack(SqStack &S){ S.base=new int[MAXSIZE...原创 2018-10-29 12:55:05 · 133 阅读 · 0 评论 -
已知长度为n的线性表A采用顺序存储结构,请写一个时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。
语言:C++#include <iostream>using namespace std;typedef int ElemType;//定义#define MAXSIZE 100typedef struct{ElemType *elem;int length;}SqList;//创建void CreateList(SqList &L){ i...原创 2018-10-29 12:53:59 · 17006 阅读 · 2 评论 -
顺序表的实现
语言:C++包含取值、查找、插入、删除等功能: #include <iostream>using namespace std;typedef int ElemType;//定义#define MAXSIZE 100typedef struct{ElemType *elem;int length;}SqList;//创建bool CreateList(SqL...原创 2018-10-01 16:23:21 · 247 阅读 · 0 评论 -
C++:将一个数组的前m个元素和后n-m个元素整体互换位置
笨方法 >_< #include <iostream>using namespace std;int main(){ int n,m,i,j; int a[100]; cout<<"请输入要创建数组的长度(不能超过100):"<<endl; cin>>n; //为数组赋值 cout&..原创 2018-10-02 14:55:29 · 6663 阅读 · 0 评论 -
C++:函数调用
运用函数调用实现:{初始:a=2 , b=3调用函数后:a=30 , b=20}代码如下:1.(引用)#include <iostream>using namespace std;void fun(int &x,int &y){ int z; z=x;x=y;y=z; x*=10;y*=10;}int mai...原创 2018-09-13 11:02:35 · 661 阅读 · 0 评论 -
C++:进制转换(0~15)
将十进制(0~15)转为十六进制1.(switch语句)#include <iostream>using namespace std;int main(){ int num; cout<<"Please enter a num(0-16):"<<endl; cout<<"输入-1退出程序"<<原创 2018-09-13 10:56:09 · 711 阅读 · 0 评论 -
C++:one hundred dollar for one hundred chicken
数据结构第一课:百钱买百鸡现有100美元,母鸡3美元,公鸡2美元,小鸡0.5美元,请问应该怎么买,可以使100美元刚好买到100只鸡?代码如下(还可以改进):#include <iostream>using namespace std;int main(){ int i,j,k,sum=0; for(i=1;i<=98;i++) for(...原创 2018-09-13 10:52:01 · 206 阅读 · 0 评论 -
单链表的创建
语言:C++创建一个单链表并实现部分功能:#include <iostream>using namespace std;typedef int Elemtype;typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*LinkList;//头插法void CreateList_H(Li...原创 2018-10-15 10:42:51 · 504 阅读 · 0 评论 -
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表扔使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-22 10:41:50 · 3442 阅读 · 3 评论 -
将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复的数据。
语言:C++1、忽略了不另外占用其他的存储空间><#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ L...原创 2018-10-22 19:18:26 · 2393 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计一个算法,用于求出A与B的交集,并存放在A链表中。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-29 12:36:49 · 26637 阅读 · 8 评论 -
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅由在A中出现而不在B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-29 12:40:16 · 8179 阅读 · 3 评论 -
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B和C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-29 12:45:04 · 10455 阅读 · 0 评论 -
设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的结点。
语言:C++#include <iostream>using namespace std;typedef int Elemtype;typedef struct LNode{ Elemtype data; struct LNode *next;}LNode,*LinkList;//尾插法void CreateList(LinkList &L,int ...原创 2018-10-29 12:47:04 · 22326 阅读 · 3 评论 -
设计一个算法,将链表中所有结点的链表方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为O(1)。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-29 12:49:01 · 15475 阅读 · 4 评论 -
设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同)。
语言:C++#include <iostream>using namespace std;typedef struct LNode{ int data; LNode *next;}LNode,*LinkList;//创建链表int CreateList(LinkList &L,int n){ LNode *p,*r;int i; L=new LN...原创 2018-10-29 12:51:54 · 6041 阅读 · 1 评论 -
C++:数组逆序
输入若干数字,实现数组逆序:#include<iostream>using namespace std;void main(){ /*1. //数组长度一定 int a[10],i,j,k; for (i=0;i<=9;i++) cin>>a[i]; for(i=0,j=9;i<=4;i++,j--)...原创 2018-09-17 10:46:23 · 14676 阅读 · 1 评论