数据结构设计与应用
文章平均质量分 53
荧光百叶草
π
展开
-
循环单链表的代码实现
循环链表(Circular Linked List)是另一种形式的链式存储结构。其特点是表中最后一个节点的指针域指向头节点,整个链表形成一个环。由此,从表中任意节点出发均可以找到表中其他节点,下图所示为单链的循环链表。类似地,还可以有多重链的循环链表。循环单链表的操作和单链表基本一致,差别仅在于:当链表遍历时,判断当前指针p是否指向表尾结点的终止条件不同。在单链表中,判断条件为p!=NULL或p->next!=NULL,而循环单链表的判别条件为p!=L或p->next!原创 2023-08-05 10:08:13 · 101 阅读 · 0 评论 -
单链表的代码实现(下)
上篇单链表中提到了带头节点的单链表,众所周知头节点是在首元节点之前附设的一个节点,其指针域指向首元节点。头节点的数据域可以不存储任何信息,也可存储与数据元素类型相同的其他附加信息。那么一个单链表如果不带头结点只包含由数据域和指针域组成的若干个节点那会是什么情况呢?因此不带头节点的单链表与带头结点的单链表相比提高了空间利用率。单链表中元素结点的遍历需要用到头指针。一个单链表可以没有头结点,但不能没有头指针。原创 2023-08-04 07:50:15 · 63 阅读 · 0 评论 -
双链表的代码实现(上)
双链表,又称双向链表。顾名思义,和单链表的数据组织形式一样,有指针域和数据域。只不过和单链表不同的是双链表拥有两个指针域分别指向前驱结点(直接前驱)和后继结点(直接后继)。因此与单链表相比,双链表中访问一个结点的前、后结点更方便。原创 2023-08-04 07:49:25 · 103 阅读 · 0 评论 -
双链表的代码实现(下)
上篇双链表中提到了带头节点的双链表,众所周知头节点是在首元节点之前附设的一个节点,其指针域指向首元节点。头节点的数据域可以不存储任何信息,也可存储与数据元素类型相同的其他附加信息。那么一个双链表如果不带头结点只包含由数据域和指针域组成的若干个节点那会是什么情况呢?因此不带头节点的双链表与带头结点的双链表相比提高了空间利用率。双链表中元素结点的遍历需要用到头指针。一个双链表可以没有头结点,但不能没有头指针。原创 2023-08-04 07:49:13 · 68 阅读 · 1 评论 -
循环双链表的代码实现
循环双链表,是一种链式存储结构的线性表,它具有两个指针域(一前一后分别是指向当前结点的直接前驱和直接后继),一个数据域。它与普通的双链表不同的是,头结点的直接前驱不再是NULL,而是该双链表的尾结点。而尾结点的直接后继也不再是BULL,而是该双链表的头结点。除了判断表是否为空、遍历表元素等操作的判断条件有所变化其余的操作(如插入,删除等等)和一般的双链表一样。原创 2023-08-04 07:49:00 · 94 阅读 · 1 评论 -
顺序栈的代码实现
顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。base为栈底指针,初始化完成后,其栈底指针指向栈底。每当插入新的元素时指针top增1;删除栈顶元素时指针top减1,因此栈空时,top和base的值相等,都指向栈底,栈非空时,top始终指向栈顶元素的上一个位置。stacksize表示栈的可容纳元素的最大容量。因此,对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头段称为栈底(bottom)。原创 2023-08-04 07:48:44 · 628 阅读 · 8 评论 -
链栈的代码实现
链栈是指采用链式存储结构实现的栈。通常链栈用单链表来表示,链栈的节点结构与单链表的结构相同,在此用Node表示。Node中的elem表示数据元素(数据域),next表示指向下一节点(直接后继)的指针。头节点中的数据域表示链栈最大可用容量。原创 2023-08-04 07:48:31 · 180 阅读 · 1 评论 -
顺序队列的代码实现
和顺序栈相类似,在队列的顺序存储结构中,除了用一组地址连续的存储单元依次存储从队头到队尾的元素外,尚需附设两个整形变量front和rear分别指示队头元素及队尾元素的位置。附设整型变量size用来表示队列的最大存储元素个数。队列的操作与栈的操作类似,不同的是,删除是在表的头部(队头)进行的。队列也有两种存储表示,顺序表示和链式表示。原创 2023-08-04 07:48:18 · 178 阅读 · 1 评论 -
循环队列的代码实现
和顺序队列相类似,在循环队列的顺序存储结构中,除了用一组地址连续的存储单元依次存储从队头到队尾的元素外,尚需附设两个整形变量front和rear分别指示队头元素及队尾元素的位置。附设整型变量size用来表示队列的最大存储元素个数。附设tag用来判断入队和出队的操作。原创 2023-08-04 07:48:04 · 181 阅读 · 1 评论 -
链队列的代码实现
一般的链队采用的是带头结点的单链表。而且要用头指针front指向单链表的头结点,尾指针rear指向单链表的尾结点。因此入队操作就相当于单链表的尾插操作,出队操作就相当于单链表的首元结点的删除操作。队列有顺序存储结构和链式存储结构,前两篇讲的队列不管是顺序队列还是循环队列它们的存储结构都属于顺序存储结构。本篇讲解链式存储结构的队列(简称链队列或链队)。C语言(LinkedQueue)原创 2023-08-04 07:47:51 · 158 阅读 · 1 评论 -
单链表的代码实现(上)
提起单链表,单链表虽然是线性表的一种数据结构,只不过是一种链表,它的链接方向是单向的,并且用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。因此,为了表示每个数据元素Ai与其直接后继数据元素Ai+1之间的逻辑关系,对数据元素Ai来讲,除了存储其本身的信息外,还需存储一个指示其直接后继的信息(直接后继元素的存储位置)。头节点的数据域可以不存储任何信息,也可存储与数据元素类型相同的其他附加信息(例如单链表的长度等等)。若链表设有头节点,则头指针所指节点为线性表的头指针;原创 2023-08-03 10:26:19 · 90 阅读 · 0 评论 -
二叉树的代码实现
二叉树(Binary Tree)是n(n≥0)个节点所构成的集合,它或为空树(n=0),或为非空树。对于非空树T:(1)有且仅有一个称之为根的节点;(2)除根节点以外的其余节点分为两个互不相交的子集T1和T2,分别称为T的左子树和右子树,且T1和T2本身又都是二叉树。二叉树与树一样具有递归性质,二叉树与树的区别主要有以下两点:(1)二叉树每个节点至多只有两棵子树(二叉树中不存在度大于2的节点);(2)二叉树的子树有左右之分,其次序不能任意颠倒。二叉树的递归定义表明二叉树或为空,或由一个根节点加上原创 2023-08-03 10:25:28 · 652 阅读 · 0 评论 -
顺序表的代码实现
顺序表的不同代码实现原创 2023-08-03 10:24:56 · 118 阅读 · 0 评论 -
数据结构的概述
数据结构原创 2023-08-03 10:24:18 · 257 阅读 · 0 评论 -
Java之利用双链表实现学生成绩管理系统
我定义了包名为DataStructure.LinearList的java包,在包里定义了双链表的数据组织形式LinkedList1.java,接着又定义了双链表的实现类DoubleLinkedList.java。并写一个实现类用来实现管理系统。然后再把焦点转移至实现类的代码上。这里又额外导入了java.util.Date包用来实现日期显示。导入java.util.Scanner包用来实现接受用户输入。花了一晚上的时间(大约从22点到0点55分)。我总算是写出来了一个用来管理学生成绩欣喜的系统。原创 2023-08-03 10:21:20 · 144 阅读 · 1 评论