-
【数据结构】 第一章 绪论
所属栏目:[安全] 日期:2020-12-15 热度:74
1.1 什么是数据结构 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科 1.2 基本概念和术语 数据 (Data): 是对客观事物的符号表示,指能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(Data[详细]
-
【数据结构】二维数组中的查找
所属栏目:[安全] 日期:2020-12-15 热度:90
我们门来看一下题目:在一个数组中,每一行都按照从左往右递增的顺序排序。每一列都按照从上到下递增的顺序排列。请完成一个函数,输入这样一个 我们门来看一下题目:在一个数组中,每一行都按照从左往右递增的顺序排序。每一列都按照从上到下递增的顺序排列[详细]
-
【数据结构】用两个栈实现队列
所属栏目:[安全] 日期:2020-12-15 热度:147
惯例。看题: 题目:用两个栈实现一个队列。队列的声明如下。请实现它的两个函数appendTail和deleteHead,分别完成对也尾部插入节点和队列头部删除节点的功能。 队列结构: templatetypenameTclassCQueue{public:CQueue(void);~CQueue(void);voidappendTail([详细]
-
【数据结构】旋转数组中的最小数字
所属栏目:[安全] 日期:2020-12-15 热度:120
惯例,我们来看一下题目: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个数递增排序的数组的一个旋转,输出旋转数组的最小元素,例如{3,4,5,1,2}为{1,2,3,5}的一个旋转,该数组的最小值为1. 这个题最直观的解法根本没有任何难[详细]
-
【数据结构】链表中倒数第k个结点
所属栏目:[安全] 日期:2020-12-15 热度:77
题目:输入一个链表,输出该链表中的倒数第k个节点。为符合大多数人的习惯,本题从1开始计数。 即链表的尾节点是倒数第一个结点。例如一个链表有6个结点,从头到尾开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。 链表的定义如下:[详细]
-
《数据结构》进行曲(之一)---线性表的顺序表示
所属栏目:[安全] 日期:2020-12-15 热度:103
线性表的顺序表示 线性表的特点 是:表的物理结构是顺序的,元素的 存储也是有顺序的。 要学会使用C语言描述和具体实现顺序表定义和操作的相关算法。 //--------顺序表的存储结构----#define MAX 100 //顺序表可能达到的最大长度 typedef struct Sq{Elemtype[详细]
-
《数据结构》进行曲(二)顺序表的链式表示(1)
所属栏目:[安全] 日期:2020-12-15 热度:116
#includestdio.h#includeiostreamusing namespace std;#define MAX 100//-----单链表的存储结构---- typedef struct LNode{int data;struct LNode *next;}LNode,*LinkList; //单链表的初始化 int InitList(LinkList L){ //构造一个空的单链表 L=new LNode; L[详细]
-
《数据结构》进行曲(三)线性表的链式表示和实现之二
所属栏目:[安全] 日期:2020-12-15 热度:69
带头结点的单链表 用链表存储数据,其特点是数据在存储空间中的顺序是离散的。对于链表中的每个数据来说,为了表示数据a(i)和其直接后继a(i+1)之间的联系,对于数据a(i),除了存储其值外,还要存储一个指示其直接后继的信息,及指向下一个元素的指针。因此a(i[详细]
-
《数据结构》线性表的链式表示和实现(三)
所属栏目:[安全] 日期:2020-12-15 热度:101
1.//---单链表的存储结构----typedef struct LNode{ElemType data;struct LNode *next;}LNode,*LinkList;/*LinkList与 LNode * 同为结构体指针类型,这两种定义本质上是等价的。为了提高程序的可读性,通常习惯上用LinkList定义头指针变量,强调定义的是某个[详细]
-
《数据结构》进行曲 之 单链表实现学生信息管理系统
所属栏目:[安全] 日期:2020-12-15 热度:129
#includestdio.h#includeiostreamusing namespace std;#define MAX 100typedef struct STU{char name[20];char sno[20];int age;float score;}Student;typedef struct LNode{Student data;struct LNode *next;}LNode,*LinkList;//初始化(带头结点的单链表)in[详细]
-
《数据结构》进行曲--带头结点的单循环链表的基本操作
所属栏目:[安全] 日期:2020-12-15 热度:61
单循环链表 循环链表的特点是最后一个元素的指针域指向头结点。 因此对于循环链表的初始化(设表的头结点是L, 不再是L-next=NULL,而是L-next=L。循环链表为空时,头结点的下一个结点依然是头结点本身。因此但虚幻链表的初始化如下:(数据类型设为int) //[详细]
-
《数据结构》带头结点单链表的合并
所属栏目:[安全] 日期:2020-12-15 热度:186
单链表的合并 一般单链表的合并和前一篇博客写的但循环链表的合并思路基本一致,区别在于合并后不用将最后一个结点的指针域指向头结点。 //合并void Combine(LinkList L1,LinkList L2){struct LNode *p1;struct LNode *p2;p1=L1-next;p2=L2-next;struct LNod[详细]
-
【数据结构】包含min函数的栈
所属栏目:[安全] 日期:2020-12-15 热度:53
题目:定义栈的数据结构,请在该类型中实现一个得到栈最小元素的min函数。在该栈中。调用min,push及pop的时间复杂度都是O(1); 其实这个题的思路就是很大众的空间换取时间上的效率。因为栈是先进后出的记录式数据结构。所以在查找某种状态值的时候我们需要[详细]
-
【数据结构】栈的压入、弹出序列
所属栏目:[安全] 日期:2020-12-15 热度:176
题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等,例如序列1,2,3,4,5是某栈的压栈序列,序列,4,5,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2不是该压栈序列的弹出序列[详细]
-
【数据结构】复杂链表的复制
所属栏目:[安全] 日期:2020-12-15 热度:52
实现复杂链表的复制。 因为复杂链表中每个节点都有一个指向任意节点的指针。所以在确定这个链表的复制的时候。我们需要进行空间来换取时间上的效率。然后我们可以将链表复制项结合在拆分。 思路就这样。 我直接给出代码: #pragmaonce#includestdio.h#includ[详细]
-
《数据结构》只设置尾指针而不设置头指针的讯循环链表的合并
所属栏目:[安全] 日期:2020-12-15 热度:155
只设置尾指针而不设置头指针的讯循环链表的合并 注意和设置头指针的循环链表的区别。 在该算法中,专门定义了链表的尾指针,注意链表在定义,遍历,等操作上和折纸头指针的链表的区别。 #includestdio.h#includeiostreamusing namespace std;#define MAX 100[详细]
-
《数据结构》单链表反转
所属栏目:[安全] 日期:2020-12-15 热度:155
单链表反转 题目描述: /* 设计一个算法,通过一趟遍历,将链表中所有的链接方向反转, 仍利用原表的空间 */ 思想: 先将链表的头结点指针域置空,p指向链表的第一个结点; q指向*p的后继,然后将*p插入到头结点的后面。 void TurnList(LinkList L){struct LN[详细]
-
《数据结构》双向链表的创建
所属栏目:[安全] 日期:2020-12-15 热度:125
双向链表的创建 双向链表的创建同样像单链表一样可以有两种方法:头插法和尾插法。 使用尾插法创建双向链表: 算法思想: 先定义一个指针q指向头结点 1.新结点p的前驱指向头结点L; 2.新结点的next指针域置空; 3.头结点的next指向p; 4.q指向p. void CreateL[详细]
-
《数据结构》双向链表的基本操作
所属栏目:[安全] 日期:2020-12-15 热度:137
双向链表的操作 双向链表的基本操作包括:判断链表是否为空、计算链表的长度、遍历链表,这3中操作的方法和单链表一样,主要和双向链表中的指向后继的指针有关。 双向链表的插入和删除操作和单链表是有区别的:双向链表的插入和删除操作要修改指向前驱和指向[详细]
-
《数据结构》一般线性表的合并
所属栏目:[安全] 日期:2020-12-15 热度:116
一般线性表的合并 算法思想: 遍历表A和表B,查看B的每一个元素是否在A中,若不在,将B的该元素插入到A的表尾,A表的表长+1。 算法的时间复杂度和A、B的长度有关,O(m*n). //合并void Combine(SqList A,SqList B){for(int i=0;iB.length;i++){int count=0;[详细]
-
【数据结构】二叉树2
所属栏目:[安全] 日期:2020-12-15 热度:96
树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。二叉树是递归定义的,因此,与二叉树有关的题[详细]
-
《数据结构》顺序栈
所属栏目:[安全] 日期:2020-12-15 热度:59
栈 对于栈,就是只能在栈顶(表尾)及逆行插入和删除的线性表。 顺序栈是利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的元素数据。分别使用top指针和base指针指向栈顶和栈底。 栈为空的标志是:top==base. 要注意的是: 非[详细]
-
《数据结构》链栈
所属栏目:[安全] 日期:2020-12-15 热度:138
链栈 链栈的存储结构与单链表的存储结构相同。 由于栈是在栈顶进行删除和添加元素的,因此,将链表的首部作为栈顶是最方便的。而且没有必要像单链表那样为了操作简单而附加一个头结点。 在链栈中注意指针的方向是从栈顶指向栈底。 #includestdio.h#define MA[详细]
-
【数据结构】线性表(数组实现)
所属栏目:[安全] 日期:2020-12-15 热度:122
1、线性表 2、线性表的抽象数据类型描述 3、线性表的数组描述 按照上述抽象描述,定义一个模板类来描述上述的抽象描述。 templateclass Tclass LinearList{public:LinearList(int MaxListSize = 10);//构造函数~LinearList()//析构函数{delete []element;//[详细]
-
《数据结构》链式有序表的合并
所属栏目:[安全] 日期:2020-12-15 热度:72
链式有序表的合并 算法思想: 设立三个指针,pa,pb,pc,其中pa和pb分别指向La表和LB表当前待比较结点,而pc指向LC白哦当前最后一个结点。 指针的初始值:pa和pb分别指向LA和LB表第一个结点,pc指向空表LC的头结点;然后比较指针a和pb所指向的元素的值,依次从[详细]