静态链表 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 ...
随机推荐
- javascript的继承模式
在javascript里面看到javascript的继承模式和传统的继承模式是有区别的,就想查资料看一下到底有区别,就看到了这篇文章,觉得讲得还可以,暂时先放上来,以后有别的东西再补充: http:/ ...
- Vue小白篇 - Vue介绍
Vue ?啥是Vue?能干嘛? vue 的介绍 Vue 是一套用于构建用户界面的 渐进式框架 ,与其它大型框架不同的是, Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层 前端三大框 ...
- quickbi报错AE0510000002
数据库连接异常: com.alipay.dwsap.common.exception.AlisisRuntimeException: 7 AE0510000002:Database access er ...
- ubuntu 安装phpunit
一.下载安装 wget https://phar.phpunit.de/phpunit-7.2.phar chmod +x phpunit-7.2.phar sudo mv phpunit-7.2.p ...
- 厉害了!新AI人工智能研究令人大开眼界
AI人工智能有很多方法可以操纵照片,让您看起来更好看,消除红眼或镜头眩光等等.但到目前为止,眨眼已经证明了一个顽强的快照对手. 这远远不是智能“绘画中”的唯一例子,因为当一个程序用它认为属于的地方填充 ...
- 【学习笔记】可持久化并查集(BZOJ3673)
好久之前就想学了 然后今天恰巧一道题需要用到就学了 前置芝士 1.主席树[可持久化数组] 2.并查集 如果你掌握了前面两个那么这个东西你就会觉得非常沙茶.. 构造 可持久化并查集 = 主席树 + 并 ...
- leetcode-15双周赛-1289-下降路径最小和
题目描述: 方法一:动态规划 O(N^3) class Solution: def minFallingPathSum(self, arr: List[List[int]]) -> int: n ...
- Java并发与多线程与锁优化
前言 目前CPU的运算速度已经达到了百亿次每秒,所以为了提高生产率和高效地完成任务,基本上都采用多线程和并发的运作方式. 并发(Concurrency):是指在某个时间段内,多任务交替处理的能力.CP ...
- cannot access Input/output error
ls: cannot access Input/output errorls: cannot open directory .: Input/output error 硬盘故障,只读或只写,你可以d ...
- PHP之面向对象小结
PHP 中创建对象 类创建后,我们可以使用 new 运算符来实例化该类的对象: $runoob = new Site; PHP 构造函数 构造函数 ,是一种特殊的方法.主要用来在创建对象时初始化对象, ...