
数据结构
Z_sea
这个作者很懒,什么都没留下…
展开
-
数据结构实验1
实验1:#include<stdio.h> //线性表:顺序存储结构#include<string.h>#define MAXSIZE 9#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int ElemType;typedef int Status;typ...原创 2018-09-17 22:33:30 · 840 阅读 · 0 评论 -
【数据结构】栈的应用-栈与递归
求n个整数的乘积:给定n个整数储存在数组里,利用递归来实现求乘积。#include<stdio.h>int productArray(int a[],int n){ if(n<1){ return 1; } return productArray(a,n-1)*a[n];}int main(){ int a[]={...原创 2018-12-21 21:04:32 · 332 阅读 · 0 评论 -
【数据结构】队列-队列的基本定义
队列的基本定义 :逻辑结构定义:typedef struct{ QElemType *base; int Front,Rear;}Queue;队列的基本操作:1、初始化一个队列2、清空一个队列3、判断一个队列是否为空4、求队列的长度5、入队列操作6、出队列操作7、取队头元素8、历遍操作 1、初始化一个队列void Ini...原创 2018-12-22 09:47:49 · 1839 阅读 · 0 评论 -
【数据结构】队列-循环队列的基本定义
循环队列的基本定义 :顺序存储结构定义:typedef struct{ QElemType *base; int Front,Rear;}CQueue; 循环队列的基本操作:1、初始化一个队列2、清空一个队列3、判断一个队列是否为空4、求队列的长度5、入队列操作6、出队列操作7、取队头元素8、历遍操作1、初始化一个队列v...原创 2018-12-22 10:02:04 · 4139 阅读 · 0 评论 -
【数据结构】队列-链队列的基本定义
链队列的基本定义 :逻辑结构定义:typedef struct QNode{ QElemType data; struct QNode *next; QNode (QElemType Data=inf,struct QNode *Next=NULL){ data=Data;next=Next; }}QNode , *QueuePtr;t...原创 2018-12-22 10:09:44 · 1915 阅读 · 0 评论 -
【数据结构】队列的应用-舞伴配对问题
舞会的舞伴配对问题:某单位举办周末友谊舞会,在舞会上,男、女各自排成一队。舞会开始时,依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。假设初始男、女人数已经固定,舞会的轮数表示舞曲数。试模拟解决上述舞伴配对问题。核心代码:void PartnerPairing(CQueue &Qm,CQueue &Qw,int R...原创 2018-12-22 11:32:21 · 9597 阅读 · 2 评论 -
【数据结构】链表定义和基本操作
单链表:单链表的类型定义:typedef struct LNode{ LElemType data; struct LNode *next; LNode ( LElemType Data=0, struct LNode *Next=NULL){ data=Data; next=Next; }}LNode,*LinkList...原创 2018-12-17 15:04:03 · 940 阅读 · 0 评论 -
【数据结构】顺序表定义和基本操作
线性表主要两种结构:顺序存储 和 链式存储:这次写的顺序表,指的是线性表的顺序存储模式;定义类型:#define ListInitSize 100#define ListIncrement 10#define LElemType inttypedef struct Sqlist{ LElemType *base; int length; int...原创 2018-12-11 16:05:05 · 4851 阅读 · 0 评论 -
【数据结构】树的应用-计算哈夫曼树的WPL值
计算哈夫曼树的WPL值 根据给定的n个权值(非负值),计算所构造哈夫曼树的WPL值。基本要求: (1)根据给定的数据,建立哈夫曼树; (2)输出每个叶子结点的带权路径长度; (3)输出哈夫曼树的WPL值。测试数据要求: 输入的n个权值之和应为100,且不允许有负值。 核心代码: void createhu...原创 2019-01-09 15:28:48 · 4645 阅读 · 1 评论 -
【数据结构】双向链表定义和基本操作
双向链表:双向链表的定义:typedef struct DuLNode{ LElemType data; struct DuLNode *next; struct DuLNode *pre; DuLNode ( LElemType Data=0,struct DuLNode *Pre=NULL,struct DuLNode *Next=NULL){ ...原创 2018-12-18 09:26:42 · 5992 阅读 · 1 评论 -
【数据结构】图的应用-Floyd
图的应用 学校要建立一个娱乐中心,设计该娱乐中心的位置,使得各部门到中心的距离较近。基本要求: (1)顶点表示各部门,顶点之间连线上的权值表示两个部门的距离; (2)采用邻接表存储图; (3)采用Flody算法求最短路径; (4)输出各路径及其距离。测试数据要求: 输入表示权值的整数必须是正整数。 /...原创 2019-01-09 15:28:42 · 284 阅读 · 0 评论 -
【数据结构】循环单链表定义和基本操作
循环单链表:循环单链表的定义:typedef struct CLNode{ LElemType data; struct CLNode * next; CLNode(LElemType Data=inf,CLNode *Next=NULL){ data=Data; next=Next; }}CLNode , *CLinkL...原创 2018-12-18 14:38:09 · 4414 阅读 · 0 评论 -
【数据结构】循环双向链表定义和基本操作
循环双向链表:循环双向链表的定义:typedef struct CDLNode{ LElemType data; struct CDLNode * pre; struct CDLNode * next; CDLNode(LElemType Data=0,struct CDLNode* Pre=NULL,struct CDLNode* Next=NULL){...原创 2018-12-18 22:40:26 · 1350 阅读 · 0 评论 -
【数据结构】循环单链表 合并
例题2-6 :将两个用尾指针表示的循环单链表合并成一个用尾指针表示的循环单链表合并成一个用尾指针表示的循环单链表这个模板出了一点问题,主要问题在于,我是直接套用了之前的做法,其实循环单链表,不用头指针,只用尾指针。但是我可以历遍来找到这个尾指针的位置。我用了两种方法,一种是原地操作,另一种是异地操作。#include<stdio.h>#include<st...原创 2018-12-19 00:16:18 · 1031 阅读 · 0 评论 -
【数据结构】链表的应用-两个有序单链表合并
例题2-7:请设计算法,将两个按值递增有序的单链表合并成一个按值递增有序的单链表 进行了:原地处理和异地处理#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#define LElemType intusing namespace st...原创 2018-12-19 02:00:39 · 1514 阅读 · 3 评论 -
【数据结构】 栈的应用-表达式求值
表达式求值:表达式求值是程序设计语言编译中的一个基本问题,任何一个表达式都有操作数、运算法则和界限符组成。其中操作数可以是常量、变量或常量标识符。运算符可以分为算术运算符、关系运算符和逻辑运算符。对于表达式的记法主要有三种:前缀表达式(波兰式)、中缀表达式和后缀表达式(逆波兰式),它们之间的区别在于运算符相对于操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前,中缀表达式的运算...原创 2019-01-09 15:29:02 · 446 阅读 · 0 评论 -
【数据结构】栈的应用-迷宫问题
迷宫求解问题是一个经典的程序设计问题,即求出一个入口到出口的一种或所有可行的路径。 核心代码:void InitMaze(int maze[N][M]){//根据输入的值,建立一个迷宫 printf("请输入迷宫的行数n和列数m:"); scanf("%d%d",&n,&m); printf("\n请输入迷宫的各行各列:\n用空格隔开,0代表路...原创 2018-12-20 21:35:36 · 550 阅读 · 0 评论 -
【数据结构】栈的应用-括号匹配
括号匹配:核心代码:bool BracketsCheck(char str[]){ LinkList St; char *p=str; char e; InitStack(St); while(*p!='\0'){ //printf("%c\n",*p); if(*p=='{'||*p=='['||*p=='(')...原创 2018-12-20 15:45:11 · 599 阅读 · 0 评论 -
数据结构【线性表】
首先附上最完整的代码实现:尊重原创(图文并茂)线性表的定义(图文并茂):1.线性表的定义若将线性表记为(a1,...,ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。2.线性表的顺序存储结构线性...原创 2018-09-10 18:22:15 · 414 阅读 · 0 评论 -
数据结构实验二
#include<bits/stdc++.h>using namespace std;const int N=100;string Man[N],Woman[N];int n,m;int main(){ cout<<"请输入男队的人数:"; cin>>n; cout<<"请依次输入舞者的姓名:\n"; f...原创 2018-09-20 08:38:45 · 546 阅读 · 0 评论 -
【作业】数据结构【线性表】
【题目】:顺序存储的线性表A,其数据元素为整型,试编写一算法,将A拆成B和C两个表,使A中元素值大于等于0的元素放入B,小于0的放入C中,要求:(1)、表B和表C另外设置存储空间。(2)、表B和表C不另外设置空间,而利用A的空间。【分析】:对于第一问,其实大家就非常容易想到,其实只要另外开辟两个线性表,对于第一个线性表A历遍即可。只要满足 a[i]>=0 ,放在...原创 2018-09-27 13:07:21 · 2646 阅读 · 1 评论 -
数据结构实验考试(希尔排序)
数据结构实验考试(希尔排序)希尔排序具体代码:#include<stdio.h>int count=0;void ShellSort(int a[],int st,int ed){ int step=ed-st+1,temp; while(step){ step=step...原创 2018-11-26 08:36:29 · 484 阅读 · 0 评论 -
【数据结构】各类排序算法的实现
给出n个学生的考试成绩表,每条信息由姓名和成绩组成,试运用各种排序思想设计算法并比较其性能,要求实现:a.按分数高低次序,打印出每个学生在考试中获得的名次,分数相同的为同一名次;b.按名次列出每个学生的姓名与分数。#include<stdio.h>#include<string>#include<string.h>#include<io...原创 2018-11-26 08:37:33 · 1966 阅读 · 0 评论 -
【数据结构】链表的应用-分裂为两个奇偶数的循环单链表
例题2-8:设L为一带头节点的循环单链表,链表中存储一组无序的整数。请设计算法,将链表中结点分成一个奇数链和一个偶数链的带有头结点的循环单链表,分别由P,Q指向;#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#define LElemType...原创 2018-12-19 14:30:31 · 1161 阅读 · 0 评论 -
【数据结构】链表的应用-单链表的逆置
例题2-9:请设计算法,将带有头结点的链表进行就地逆置。有两种写法,一种是把链表进行头插法,进行逆置另一种方法就是把链表设置三变量不断往后指来移动。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#define LElemType ...原创 2018-12-19 14:34:21 · 1015 阅读 · 0 评论 -
【数据结构】链表的应用-约瑟夫环问题
例题2-10:约瑟夫环问题:编号1,2,3,……n的n个人按顺时针方向围成一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始报数,报到m时停止报数,报m的人出列,将他的密码作为新的m值,从下一个人开始重新从1开始报数,如此下去,直至所有人全部出列为止。请设计算法求出出列顺序。#include<stdio.h>#includ...原创 2018-12-19 15:41:12 · 311 阅读 · 0 评论 -
【数据结构】链表的应用-一元多项式的相加运算
例题2-11:请设计算法,实现一元多项式的相加运算。#include<stdio.h>#include<string.h>using namespace std;typedef struct PNode{ int coef; int exp; struct PNode *next; PNode(int Coef=0,int Exp...原创 2018-12-19 22:57:58 · 542 阅读 · 0 评论 -
【数据结构】链表的应用-一元多项式的相乘运算
例题2-11_2:请设计算法,实现一元多项式的相乘运算。#include<stdio.h>#include<string.h>using namespace std;typedef struct PNode{ int coef; int exp; struct PNode *next; PNode(int Coef=0,int E...原创 2018-12-19 23:50:17 · 1148 阅读 · 1 评论 -
【数据结构】链表的应用-判断带头结点的循环双向链表是否对称
例题2-12:请设计算法,判断带头结点的循环双向链表是否对称核心代码:bool Symmetry(CDLinkList L){ CDLinkList p=L->next,q=L->pre; while(p!=q&&q->next!=p){ //链表个数为: 奇数 和偶数 同时讨论 if(p->data==...原创 2018-12-20 00:05:44 · 4933 阅读 · 1 评论 -
【数据结构】栈-顺序栈的基本定义
顺序栈的基本类型定义:typedef struct{ SElemType *base; int top; int stacksize;}SqStack;前提工作:提供realloc函数:template <class T>T* realloc_p(T* a,int Size){ T *t; t=new T [Size]; ...原创 2018-12-20 01:45:04 · 3672 阅读 · 0 评论 -
【数据结构】栈-共享存储空间的顺序栈
共享存储空间的顺序栈的基本类型定义:typedef struct{ SElemType data[StackSize]; int top1,top2;}DuSqStack;共享存储空间的顺序栈的基本操作:1、初始化操作InitStackvoid InitStack(DuSqStack &S){ S.top1=0,S.top2=StackSize...原创 2018-12-20 14:34:32 · 530 阅读 · 0 评论 -
【数据结构】栈-链栈的基本定义
链栈的基本类型定义:typedef struct LNode{ int data; struct LNode *next; LNode (int Data=0,struct LNode * Next=NULL){ data=Data; next=Next; }}LNode ,*LinkList ;链栈的基本操作:1、初...原创 2018-12-20 14:41:56 · 4958 阅读 · 0 评论 -
【数据结构】栈的应用-数制转换
对于任意的一个正整数n,都可以转换一个d进制数,一个简单的算法是基于原理n=(n/d)*d+n%d(其中/ 表示整除)的。例如:(668)10=(1234)8 利用栈先进后出的特点:核心代码:void Conversion(int n,int d){ LinkList St; InitStack(St); int e; while(n){ ...原创 2018-12-20 15:06:13 · 1326 阅读 · 0 评论 -
【字典顺序的第K小数字】zyb的面试
题目链接:zyb的面试参考博客:[LeetCode] K-th Smallest in Lexicographical Order 字典顺序的第K小数字【题目】:今天zyb参加一场面试,面试官听说zyb是ACMer之后立马抛出了一道算法题给zyb:有一个序列,是1到n的一种排列,排列的顺序是字典序小的在前,那么第k个数字是什么?例如n=15,k=7, 排列顺序为1, 10, 11,...原创 2019-03-17 19:07:45 · 411 阅读 · 0 评论