c语言将一个已知头结点的单链表逆序_C语言实现常用数据结构:静态链表数组实现(第5篇)...

59f5ff7c956d7a08f41ee044dc1fdca1.gif

「今天是学习C语言第 148 天」

纸上学来终觉浅,绝知此事要躬行。—— 陆游「冬夜读书示子聿」

# 静态链表

使用数组实现,利用数组下标代替指针,从而实现数据结点之间的先后关系。实现要点:

1.数组下标为0的位置为头结点,指向自身时表明链表为空。

2.数组下标为1的位置为空间备用链表的头结点,保存未被使用的数组空间。

3.数组下标代替指针来理解链表结构。

备注:从逻辑结构来看,其实有两个链表存在的数组中,一个用于保存数据的链表,一个是未使用的空闲链表。另外链表其它实现参见:

C语言实现常用数据结构:带头结点的单链表(第3篇)

C语言实现常用数据结构:不带头结点的单链表(第4篇)

# 使用示例

功能:输入数据个数和数据,逆序保存到顺序表,并逆序输出显示到屏幕。

运行结果如下:

请输入数据总个数:10

请依次输入10个整数:0 1 2 3 4 5 6 7 8 9

链表输出结果:9 8 7 6 5 4 3 2 1 0

链表删除5位置数据后输出结果:9 8 7 6 4 3 2 1 0

# 代码实现

 /* ==========================================  名称   :C语言实现常用数据结构   功能   :静态单链表   环境   :Windows 10 + Dev-C++编译    作者   :一只会C的猫   公众号 :C语言大全(coderpointer)  时间   :2020.8.13 ==========================================*/#include #include // 链表最大长度#define MAX_SIZE 1000// 静态链表使用数组下标代替指针 // cur表示数组下标指向下一个结点位置 typedef struct list_node{  int data;  int cur;}list_node;//  使用一维数组实现单链表 list_node link_list[MAX_SIZE]; // 初始化数组为空链表// link_list[0]为链表头结点// link_list[1]为空闲备用链表,用于记录未使用过的数组空间 void init_link_list(){  // 当头结点的下标指向自己时,链表为空   link_list[0].cur = 0;    // 空链表时,所有的空间均未使用   int i;  for(i=1; i-1; i++)    link_list[i].cur = i+1;  link_list[MAX_SIZE-1].cur = 0;}  // 增加数据 int insert_link_list(int data){  // 空间已满,返回-1   if(link_list[1].cur == 0)    return -1;    // 在空闲备用链表中寻找一个空闲的位置存放数据  int pos = link_list[1].cur;  link_list[1].cur = link_list[pos].cur;    // 头插法,直接将数据插入链表第一个位置  link_list[pos].data = data;  link_list[pos].cur = link_list[0].cur;  link_list[0].cur = pos;   return 0;}// 删除指定位置 int delete_link_list(int *data, int pos){  if(data == NULL || link_list[0].cur == 0 || pos < 1)    return -1;  // 找到pos位置的前一个结点   int i = 1;  int cur = 0;  while(i  {    i++;    cur = link_list[cur].cur;  }    if(i==pos && link_list[cur].cur)  {    int t = link_list[cur].cur;    *data = link_list[t].data;    link_list[cur].cur = link_list[t].cur;    link_list[t].cur = link_list[1].cur;    link_list[1].cur = t;  }  return 0;  }// 查看 void print_link_list(){  int cur = link_list[0].cur;  while(cur != 0)  {    printf("%d ", link_list[cur].data);    cur = link_list[cur].cur;  }  printf("\n"); }  int main(void){  init_link_list();  int n,d;  printf("请输入数据总个数:");  scanf("%d", &n);  printf("请依次输入%d个整数:", n);  int i;  for(i=0; i  {    scanf("%d", &d);    // 每次插入到链表首位,这样实现倒序     insert_link_list(d);   }    printf("静态链表输出结果:");  print_link_list();     printf("静态链表删除%d位置数据后:",n/2);  delete_link_list(&d, n/2);  print_link_list();   return 0;}

---------- End ----------

往期精彩推荐:

一万分钟C语言学习计划:2020开篇

C语言内存管理的两种方式

C89标准库功能简介

C语言链接与存储类型

C语言标准输入输出

C语言入门基本语法

更多请点击公众号历史文章...

2935b4cbb47b00d69bb0c37d5d840977.png

「喜欢C请赏个 赞ba54fc15b5bea8bfbd25fb046551fd8b.png    点击右下角 在看」

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7 防火墙(firewalld)开启常见端口命令

CentOS7 防火墙开启常见端口命令 1、安装Firewall命令&#xff1a; yum install firewalld firewalld-config2、Firewall开启常见端口命令 firewall-cmd --zonepublic --add-port80/tcp --permanent firewall-cmd --zonepublic --add-port443/tcp --permanent firewall-cmd …

集成平台集群任务动态分派

源宝导读&#xff1a;MIP集成平台是为了解决企业大量异构系统之间快速、稳定集成的需要&#xff0c;助力企业数字化转型&#xff0c;明源云自主研发的平台系统。本文将对"事件任务分派"场景的架构设计以及实践成果进行分享。背景MIP集成平台是为了解决企业大量异构系…

dotcpp1115 DNA-打印图案

题目描述 小强从小就喜欢生命科学&#xff0c;他总是好奇花草鸟兽从哪里来的。终于&#xff0c; 小强上中学了&#xff0c;接触到了神圣的名词–DNA.它有一个双螺旋的结构。这让一根筋的小强抓破头皮&#xff0c;“要是能画出来就好了” 小强喊道。现在就请你帮助他吧 输入 输…

akb48_AKB48里历史——六年的终结

注&#xff1a;这是2012年发行的一本在BUBUKA连载的基础上补充了一些内容的粉丝公式教科书&#xff0c;从里面找了部分内容翻译了一下&#xff0c;节选的内容主要说的是2011年的事情&#xff0c;以当时作者的视角&#xff0c;是AKB48第一次新老粉丝换代的时期。前田敦子和大岛优…

[头脑风暴] 解读Docker Bridge网络模型

背景这几天在研究Kubernetes&#xff0c; 遇到一个有意思的nodejs镜像&#xff1a;luksa/kubia# 不带端口映射启动容器 docker run -it -d luksa/kubia # 连接到默认的Bridge网桥&#xff0c;容器IP是 172.17.0.2之后&#xff0c;在宿主机使用容器IP和8080 端口可访问该容器…

kodi pvr 不能安装_「家庭影音串流」电视最强播放器KODI使用方法

本文作者&#xff1a;空翻的帕兹文章适用电脑手机等全平台设备&#xff0c;在用户没有nas的情况下如何使用串流电视最强播放器KODIKodi是由XBMC基金會開發的開源媒體播放器&#xff0c;原名XBMC(最後一個以XBMC命名的版本是13.2「Gotham」&#xff0c;14.0 「Helix」是第一個以…

[蓝桥杯][算法提高VIP]五次方数-枚举

题目描述 对一个数十进制表示时的每一位数字乘五次方再求和&#xff0c;会得到一个数的五次方数 例如&#xff1a;1024的五次方数为103210241057 有这样一些神奇的数&#xff0c;它的五次方数就是它自己&#xff0c;而且这样的数竟然只有有限多个 从小到大输出所有这样的数 输入…

docker部署flask项目

项目本地运行 1.到github或者自己创建一个flask项目&#xff0c;确保在本地是可以运行成功的 2.上传到自己的代码仓库 服务器部署 1.安装docker yum install docker -y2.配置加速器 DaoCloud加速器采用自主研发的智能路由及缓存技术&#xff0c;并引入了现金的协议层优化…

.NET Core开发实战(第24课:文件提供程序:让你可以将文件放在任何地方)--学习笔记...

24 | 文件提供程序&#xff1a;让你可以将文件放在任何地方文件提供程序核心类型&#xff1a;1、IFileProvider2、IFileInfo3、IDirectoryContentsIFileProvider 是访问各种各样文件提供程序的接口通过这样子抽象的定义&#xff0c;让我们与具体的抽象文件的读取的代码进行了隔…

连接mysql数据库_解决Navicat连接MySQL数据库报错问题

今天在用Navicat连接另外一台主机上的MySQL时报错&#xff1a;Host is not allowed to connect to this MySQL server默认安装的mysql无法远程连接是因为MySQL默认配置了不支持远程连接引起的。解决方法&#xff1a;一、本地主机上登录root用户找到mysql.exe所在路径&#xff0…

洛谷T172098 子串-substr

代码如下&#xff1a; #include <iostream> #include <cstring> using namespace std;int main() {int cnt;cin >> cnt;string a, b;while (cnt--) {int n, m;cin >> n >> m;cin >> a;cin >> b;int ans 0 ;for (int i 0; i < …

在Ocelot中使用自定义的中间件(二)

在上文中《在Ocelot中使用自定义的中间件&#xff08;一&#xff09;》&#xff0c;我介绍了如何在Ocelot中使用自定义的中间件来修改下游服务的response body。今天&#xff0c;我们再扩展一下设计&#xff0c;让我们自己设计的中间件变得更为通用&#xff0c;使其能够应用在不…

机器学习理论引导 电子版_机器学习理论篇1:机器学习的数学基础(2)

本节主要就是讲述的机器学习的数学基础&#xff0c;提到数学基础&#xff0c;可能一眼就会是满眼的枯燥、没意思&#xff0c;但是成就英雄的路上注定了孤独&#xff0c;要想要真正的在学术上有所突破就必须挨得住寂寞&#xff0c;受得住孤独&#xff0c;才能真正的走进熟悉直到…

洛谷T172100 商店-贪心

解题思路&#xff1a; 贪心 代码如下&#xff1a; #include <iostream> #include <algorithm> using namespace std; const int N 100010; int a[N], w[N]; int ans;int main() {int n, m;cin >> n >> m;for (int i 1; i < n; i)cin >> a…

vue动态切换css文件_vue实现样式之间的切换及vue动态样式的实现方法

编程之家收集整理的这篇文章主要介绍了vue实现样式之间的切换及vue动态样式的实现方法&#xff0c;编程之家小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。前言既然我们选择了vue&#xff0c;那么在做东西时就不要想着去操作dom&#xff0c;所有的…

[蓝桥杯2015决赛]机器人数目-枚举

题目描述 少年宫新近邮购了小机器人配件&#xff0c;共有3类&#xff0c;其中&#xff0c; A类含有&#xff1a;8个轮子&#xff0c;1个传感器 B类含有: 6个轮子&#xff0c;3个传感器 C类含有&#xff1a;4个轮子&#xff0c;4个传感器 他们一共订购了100套机器人&#xff0c;…

终结“永恒之蓝”后,再战“永恒之黑”

引子&#xff1a;2003年的“抗击非典”&#xff0c;17年后的2020年“抗击新冠”。2017年的“永恒之蓝”&#xff0c;3年后的2020年“永恒之黑”。历史&#xff1a;2017年5月13日&#xff0c;在“胖哥技术堂”中发布了《截杀“WannaCrypt”&#xff0c;终结“永恒之蓝”》。三年…

python 广告拦截_Python如何在抓取时欺骗反广告块过滤器?

Javascript解析您遇到的问题是在页面加载后加载数据的JavaScript过滤器。警告您正在使用adblock的消息以原始HTML格式存在&#xff0c;并且是完全静态的。当JavaScript调用能够验证adblock存在或不存在的位置时&#xff0c;它将被替换。有几种方法可以解决这个问题&#xff0c;…

使用.Net Core编写命令行工具(CLI)

使用.Net Core编写命令行工具(CLI)命令行工具(CLI)命令行工具(CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面&#xff0c;它通常不支持鼠标&#xff0c;用户通过键盘输入指令&#xff0c;计算机接收到指令后&#xff0c;予以执行。通常认为&#xff0c;命令行工具(C…

[蓝桥杯2015决赛]奇怪的数列-双指针+模拟

题目描述 从X星截获一份电码&#xff0c;是一些数字&#xff0c;如下&#xff1a; 13 1113 3113 132113 1113122113 … YY博士经彻夜研究&#xff0c;发现了规律&#xff1a; 第一行的数字随便是什么&#xff0c;以后每一行都是对上一行“读出来” 比如第2行&#xff0c;是对第…