数据结构的C++实现之静态链表

首先我们让数组的元素都是由两个数据域组成,data和cur。也就是说,数组的每一个下标都对应一个data和一个cur。

数据域data用来存放数据元素,也就是通常我们要处理的数据;而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。我们把这种用数组描述的链表叫做静态链表。

数组的第一个元素,即下标为0的元素的cur就存放备用链表的第一个结点的下标;而数组的最后一个元素的cur则存放第一个有数值的元素的下标,相当于单链表的头节点作用,当整个链表为空时,则为0,表示无指向。如图3-12-2所示

现在如果我们需要在“乙”和“丁”之间插入一个值为“丙”的元素,只需要将“乙”的cur改为7,表示下一位是“丙”,并将“丙”的cur改为4,表示下一位是丁。

如图3-12-3所示。

现在如果我们删除了第一个元素“甲”,表示现在“甲”这个位置空出来了,如果未来有新人要来则优先考虑这里,所以删除的位置成为第一个优先空位,即首元素的cur为1, 第一个元素位置的cur改为8,而下标为8的位置cur改为9,最后元素位置的cur改为2,如图3-12-4所示。

时间: 2024-11-10 01:09:38

数据结构的C++实现之静态链表的相关文章

大话数据结构三:线性表的链式存储结构(静态链表)

1. 静态链表:用数组描述的链表叫静态链表,通常为方便数据插入,我们会把数组建的大一些. 2. 数组元素(node):由两个数据域组成(data,cursor).数据域data用来存放数据元素,也就是通常我们要处理的数据:而cursor相当于单链表中的指针,存放该元素的后继在数组中的下标. 3. Java实现静态链表: // 静态链表 class StaticLinkedList { private int size; private Node[] node = new Node[100]; /

c 数据结构 静态链表-C语言静态链表问题,vc下为什么会编译不通过呢?

问题描述 C语言静态链表问题,vc下为什么会编译不通过呢? #include #include #include #define NULL 0 #define Maxsize 100 typedef int elemtype,status; typedef struct { int cur; elemtype data; }component,SLinkList[Maxsize];/*SLinkList是一个结构体数组*/ void Initspace_SL(SLinkList &space)/

PHP实现的静态链表

PHP实现的单链表,如下代码: <?php      //结点类      class Node{          private $next = NULL; //下一个结点指针          private $data = NULL; //数据               public function Node($data, $next = NULL){              $this->data = $data;              $next && $

c++-C++ PAT数据结构基础02-1题 反转单链表

问题描述 C++ PAT数据结构基础02-1题 反转单链表 题目大意:反转单链表,给定常数K和单链表L,要求按每K个节点反转单链表,如:L: 1->2->3->4->5->6 K=3,输出:3->2->1->6->5->4,如果K=4,输出:4->3->2->1->5->6. 输入说明:每次输入一个案例,对每个案例,第一行内容是链表第一个节点的地址,节点数N(N<=100,000)(不一定是最终形成的单链表的节

c++ 数据结构-数据结构c++循环单链表问题,急!!

问题描述 数据结构c++循环单链表问题,急!! CirSinglyList& operator+=(CirSinglyList &list) //尾插入list,集合并 解决方案 CirSinglyList& operator+=(CirSinglyList &list) { CirSinglyList *p = this; while(p->next != NULL) p = p->next; while(list->next != NULL) { p-

C语言静态链表和动态链表_C 语言

1. 静态链表 结构体中的成员可以是各种类型的指针变量,当一个结构体中有一个或多个成员的基类型是本结构体类型时,则称这种结构体为"引用自身的结构体".如: struct link { char ch; struct link *p; } a; p是一个可以指向 struct link 类型变量的指针成员.因此,a.p = &a 是合法的表达式,由此构成的存储结构如图1所示. 图1 引用自身的结构体 例1 一个简单的链表 #include <stdio.h> stru

C语言实现静态链表的方法_C 语言

在动手之前我一直以为静态链表和动态链表没有什么差别,细细一想才发现,原来静态链表之中隐藏着一个非常值得讨论的话题--内存管理. 静态链表的"静态"二字是指内存的来源为静态内存(通常用全局数组).与动态链表不同,在静态链表中节点内存的申请与释放都需要自行维护,由于这里是链表,也很容易想到将空余的节点链接起来形成一个free_list,每次需要时从free_list头部取出一个节点,释放时再将节点加到头部,这样就能够非常容易的实现链表的其他操作. 复制代码 代码如下: // 静态链表 的实

&amp;quot;数据结构翻转课堂&amp;quot;答疑实录——链表

[说明] 本文是<数据结构>翻转课堂在线答疑的实录,由云班课的"答疑/讨论"功能中导出数据整理而成. [重要提示] 下面的内容,按时间从后往前的顺序提供,请直接到文章末尾,倒着看更顺畅. [知识点答疑] 赵鹤2015-09-21 16:38:25 头插法为什么首节点不是后来插入的节点 贺利坚2015-09-21 17:13:56 后加入的成头了. 赵鹤2015-09-21 17:26:04 可是首节点并没有数据域? 贺利坚2015-09-21 18:45:32 先区分下,首

快速排序&amp;静态链表的插入排序

//本程序适合在turbo c++ 运行,内部的许多注释是本人在调试使用的,以跟踪错误所在并未去掉/*静态连表插入排序*/#define SIZE 100#define KeyType int#define MAXINT  30000#include<stdio.h>#include<stdlib.h>#include"iostream.h"int safe=0;typedef struct{  KeyType key;  int next;}SNode;typ