静态链表 C++版
笔记静态链表的实现
#include "stdafx.h"
#include<iostream> using namespace std; #define MAXSIZE 100 typedef int ElemType; typedef struct {
ElemType data;
int cur;
}component,SLinkList[MAXSIZE]; void InitSpace_SL(SLinkList &space) {
for (int i = ; i < MAXSIZE - ; ++i) space[i].cur = i + ;
space[MAXSIZE - ].cur = ;
} int Malloc_SL(SLinkList &space) {
int i = space[].cur;
if (space[].cur) space[].cur = space[i].cur;
return i;
} void Free_SL(SLinkList & space, int k) {
space[k].cur = space[].cur; space[].cur = k;
} void difference(SLinkList &space, int &S) {
InitSpace_SL(space); //初始化备用空间
S = Malloc_SL(space); //生成S的头结点
int r = S;
cout << "请输入A,B集合的元素个数,用空格隔开" << endl;
int m, n;
cin >> m >> n;
int i, j;
cout << "请依次输入A集合的元素并按回车" << endl;
int nn;
//给A集合添加数据
for (j = ; j <= m; ++j) {
i = Malloc_SL(space); //取出下一个空间索引
cin>>nn; //赋值
space[i].data = nn;
space[r].cur = i; //尾插法(r指向的是最后一个结点,让上一次最后结点指向i索引)
r = i; //r指向最后的节点
} space[r].cur = ; //将最后一个结点指向空(也就是0)
printf("请依次输入B集合的元素\n");
int b;
int p;
int k;
for (j = ; j <= n; ++j) {
cin >> b; //读取并记录到临时变量b
p = S; //记录头结点
k = space[S].cur; //k指向第一个结点
while (k != space[r].cur && space[k].data != b) {
p = k;
k = space[k].cur; //指向下一个结点
}
if (k == space[r].cur) { //不存在元素b,插入到r所指结点之后
i = Malloc_SL(space);
space[i].data = b;
space[i].cur = space[r].cur;
space[r].cur = i;
}
else { //存在元素b,删除
space[p].cur = space[k].cur;
Free_SL(space, k);
if (r == k) r = p;
}
}
//指回头指针
space[].cur = S; } void Show_SL(SLinkList &space) {
printf("链表的打印结果是\n");
int s = Malloc_SL(space); //指向头结点
while (space[s].cur != ) {
s = Malloc_SL(space);
cout << space[s].data<<" ";
}
cout << endl;
} int main() {
SLinkList sl;
int s;
difference(sl, s);
Show_SL(sl);
system("pause");
return EXIT_SUCCESS;
}
实现效果如下:

学习自 严蔚敏的《数据结构》静态链表
静态链表 C++版的更多相关文章
- 【Java】 大话数据结构(3) 线性表之静态链表
本文根据<大话数据结构>一书,实现了Java版的静态链表. 用数组描述的链表,称为静态链表. 数组元素由两个数据域data和cur组成:data存放数据元素:cur相当于单链表中的next ...
- C语言实现单链表-03版
在C语言实现单链表-02版中我们只是简单的更新一下链表的组织方式: 它没有更多的更新功能,因此我们这个版本将要完成如下功能: Problem 1,搜索相关节点: 2,前插节点: 3,后追加节点: 4, ...
- C语言实现单链表-02版
我们在C语言实现单链表-01版中实现的链表非常简单: 但是它对于理解单链表是非常有帮助的,至少我就是这样认为的: 简单的不能再简单的东西没那么实用,所以我们接下来要大规模的修改啦: Problem 1 ...
- 使用C语言描述静态链表和动态链表
静态链表和动态链表是线性表链式存储结构的两种不同的表示方式. 静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点. 动态链表是相对于静态链 ...
- 静态链表 C语言描述
静态链表1.下标为0的游标存放最后存放数据节点的游标,即是第一个没有存放元素(备用链表)的下标2.最后一个的节点存放第一个由数值得下标3.第一个和最后一个都不存放数据 即是备用链表的第一个的下标 4. ...
- 03静态链表_StaticLinkList--(线性表)
#include "string.h" #include "ctype.h" #include "stdio.h" #include &qu ...
- java与数据结构(2)---java实现静态链表
结点类 1 //结点类 2 class Node<T> { 3 private T data; 4 private int cursor; 5 6 Node(T data, int cur ...
- 静态链表实现 (A-B)U(B-A)
图中黄色部分为(A-B)U(B-A)的实际意义,用结构数组做静态链表来实现该表达式 大致流程是先建立A链表,接着将挨个输入的B中元素在A链表中遍历.如果没找到,就加到A链表结尾下标为endpointe ...
- C链表之创建简单静态链表
C代码: #include<stdio.h> #include<stdlib.h> #include<malloc.h> //创建简单静态链表 typedef st ...
随机推荐
- indexDB的概念
IndexDB利用数据键(key)访问,通过索引功能搜索数据,适用于大量的结构化数据,如日历,通讯簿或者记事本. 1. 以key/value成对保存数据 IndexDB和WebStorage都是以数据 ...
- 洛谷P3830 随机树(SHOI2012)概率期望DP
题意:中文题,按照题目要求的二叉树生成方式,问(1)叶平均深度 (2)树平均深度 解法:这道题看完题之后完全没头绪,无奈看题解果然不是我能想到的qwq.题解参考https://blog.csdn.ne ...
- Sass--扩展继承
在 Sass 中也具有继承一说,也是继承类中的样式代码块.在 Sass 中是通过关键词 “@extend”来继承已存在的类样式块,从而实现代码的继承.如下所示: //SCSS .btn { borde ...
- ltp-ddt nand_mtd_dd_rw_jffs2
error: 由于在uboot下没有发现坏块,将核心代码剥离出来调试: flash_eraseall -q -j /dev/mtd1mkdir -p /mnt/partition_nand_1419m ...
- mybatis基本查询
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...
- CentOS7 安装xen(在虚拟机上成功,实体机测试死机!)
此文章只做操作记录,其中有些地方可能漏了!!我只贴出自己的操作过程!其它有差别的地方请自己网上查找参考! 只有在全虚拟化下才能安装Windows,这就需要有硬件支持,并在BIOS中开启Virtuali ...
- MySQL执行计划之EXPLAIN基本解释说明
一.EXPLAIN使用潜规则 explain + sql语句 例如: EXPLAIN SELECT * FROM `t_user`; 二. 表头字段详解 (1) id-----> 表的读取顺序 ...
- 谷歌SEO和百度SEO的区别
远程桌面连接 一直有一个现象:关于谷歌优化或只是以谷歌为例谈SEO观点或技术时,经常有读者说,不适用于百度,希望多看到关于百度SEO的帖子上一篇利用规范的标签在谷歌排名中陷害竞争对手的帖子,就有好 ...
- AcWing 313. 花店橱窗 (线性DP)打卡
题目:https://www.acwing.com/problem/content/315/ 题意:有一个矩阵,你需要在每一行选择一个数,必须保证前一行的数的下标选择在下一行的左边,即下标有单调性,然 ...
- hashmap:cr:csdn
HashMap相关问题 1.你用过HashMap吗?什么是HashMap?你为什么用到它? 用过,HashMap是基于哈希表的Map接口的非同步实现,它允许null键和null值,且HashMap依托 ...