笔记静态链表的实现

 #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++版的更多相关文章

  1. 【Java】 大话数据结构(3) 线性表之静态链表

    本文根据<大话数据结构>一书,实现了Java版的静态链表. 用数组描述的链表,称为静态链表. 数组元素由两个数据域data和cur组成:data存放数据元素:cur相当于单链表中的next ...

  2. C语言实现单链表-03版

    在C语言实现单链表-02版中我们只是简单的更新一下链表的组织方式: 它没有更多的更新功能,因此我们这个版本将要完成如下功能: Problem 1,搜索相关节点: 2,前插节点: 3,后追加节点: 4, ...

  3. C语言实现单链表-02版

    我们在C语言实现单链表-01版中实现的链表非常简单: 但是它对于理解单链表是非常有帮助的,至少我就是这样认为的: 简单的不能再简单的东西没那么实用,所以我们接下来要大规模的修改啦: Problem 1 ...

  4. 使用C语言描述静态链表和动态链表

    静态链表和动态链表是线性表链式存储结构的两种不同的表示方式. 静态链表的初始长度一般是固定的,在做插入和删除操作时不需要移动元素,仅需修改指针,故仍具有链式存储结构的主要优点. 动态链表是相对于静态链 ...

  5. 静态链表 C语言描述

    静态链表1.下标为0的游标存放最后存放数据节点的游标,即是第一个没有存放元素(备用链表)的下标2.最后一个的节点存放第一个由数值得下标3.第一个和最后一个都不存放数据 即是备用链表的第一个的下标 4. ...

  6. 03静态链表_StaticLinkList--(线性表)

    #include "string.h" #include "ctype.h" #include "stdio.h" #include &qu ...

  7. java与数据结构(2)---java实现静态链表

    结点类 1 //结点类 2 class Node<T> { 3 private T data; 4 private int cursor; 5 6 Node(T data, int cur ...

  8. 静态链表实现 (A-B)U(B-A)

    图中黄色部分为(A-B)U(B-A)的实际意义,用结构数组做静态链表来实现该表达式 大致流程是先建立A链表,接着将挨个输入的B中元素在A链表中遍历.如果没找到,就加到A链表结尾下标为endpointe ...

  9. C链表之创建简单静态链表

    C代码: #include<stdio.h> #include<stdlib.h> #include<malloc.h> //创建简单静态链表 typedef st ...

随机推荐

  1. CSRF相关

    CSRF原理 第一次获取页面的时候浏览器返回一个随机字符串,之后提交数据的时候需要把到这个字符串去提交,不然会报错 返回的时候还会把这个字符串放到cookie里面, 使用form提交时候: {% cs ...

  2. Error: webpack.optimize.UglifyJsPlugin has been removed, please use config.optimizat

    按照教程上配置文件如下: var webpack=require('webpack'); var HtmlwebpackPlugin=require('html-webpack-plugin'); v ...

  3. [烧脑时刻]EL表达式1分钟完事

    一天,程序员A问我,我们比比谁的知识点多,反应快.我回答:那就看谁最快用EL表达式的显示在页面上吧. 话不多说,计时开始. 项目的结构如上,大概就是一个Family的JavaBean,一个jsp页面, ...

  4. 2018-8-10-win10-uwp-MetroLog-入门

    title author date CreateTime categories win10 uwp MetroLog 入门 lindexi 2018-08-10 19:16:53 +0800 2018 ...

  5. Sass-乘法

    Sass 中的乘法运算和前面介绍的加法与减法运算还略有不同.虽然他也能够支持多种单位(比如 em ,px , %),但当一个单位同时声明两个值时会有问题.比如下面的示例: 编译的时候报“20px*px ...

  6. robotframework

    常用关键字* Settings * Library Selenium2Library1* Keywords * 打开浏览器 [Arguments] ${url} ${browser} [Documen ...

  7. 一个历时五天的 Bug

    一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上. 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug .那个 Bug 连续查找了 ...

  8. opencl(九)----标量、向量数据类型

    1.opencl 标量数据类型 bool char unsigned char/uchar short 16位有符号整数(补码) ushort int 32位有符号整数(补码) uint 32位无符号 ...

  9. pgsql SQL监控,查询SQL执行情况

    SELECT procpid, START, now() - START AS lap, current_query FROM ( SELECT backendid, pg_stat_get_back ...

  10. Delphi 自带了 Base64 编解码的单元

    Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因.  这个单元提供两套四个公开函数:  对流的编解码: procedu ...