实验一 线性表的顺序存储与实现_数据结构篇之单链表的创建以及实现

上次咱们已经一起分享了线性表的顺序存储的基本创建以及一些运算方法的实现,那么这次咱们主要来研究线性表的链式存储,俗称单链表,咱们知道顺序表在建立的时候要注意需要建立一块连续的空间,所以需要使用数组在内存中开辟空间,但是有个问题,当数据很多时,就需要建立一大块连续的空间,内存中空间是有限的。建立连续的空间可能会影响到其他程序的使用,并且在运算当中,插入数据或者是删除数据会造成数据的成片移动,回消耗大量的时间,单链表就会很好的解决这个问题。

将线性表L=(a0,a1,……,an-1)中各元素分布在存储器的,不同存储块,称为结点,通过地址或指针建立它们之间的联系,所得到的存储结构为链表结构。表中元素ai的结点形式如图所示。

d01791adb5ecc828430cb6c73bcbbd4a.png

其中,结点的data域存放数据元素ai,而next域是一个指针,指向ai的直接后继ai+1所在的结点。于是,线性表L=( a0,a1,……,an-1)的结构如图所示。

59641aaac77186407762f368f30b73ad.png

(1)定义结点结构体 linklist_t

定义一个结构体,每一个结构体表示一个节点,节点里面包含要存储的数据以及指向下一个节点的指针。这样通过找寻下一个节点的地址来将数据联系在一起。

0dc6ef028951536db38d1aaecea90d91.png

(2)创建一个链表 linklist_create( )

b04945116e0e4ce437b460de4a0185bd.png

(3)头插法插入数据 linklist_head_insert( )

9bca7d9ffc608b826ca2a7fde93ca6d7.png

256369d465d59a423f504800991c213e.png

(4)打印数据 linklist_show( )

cfddc2c485ff8b9bc1572b2ea57309bf.png

(5)判断链表是否为空 linklist_empty( )

f142524caac8f9162b4ba796949007ea.png

(6)头删法删除数据 linklist_head_delete( )

定义一个指针,指向要删除的节点,主要是为了能够临时保存数据,然后进行指针指向的改变,最后释放指针,并将指针置为空。

b9d5442ac0ac100befb750affa52eefb.png

d50c3d03d29d4917b1ccdea641e43abe.png

(7)指定数据删除 list_delete_value( )

876b66cd1a31d6e601b9dc869ab8bf78.png

(8)尾插法插入数据 linklist_tail_insert( )

38abc277216b596dd7eca07482d6fa2f.png

(9)按照顺序插入数据(自带排序功能) linklist_sort_insert( )

06d83659f234d5e50189dd46662851aa.png

(10.1)按照指定位置插入 linklist_pos_insert( )

606c231d9ee56a9dc220ee25e59fa668.png

(10.2)将数据倒置 linklist_recover( )

例如将5 4 3 2 1排成1 2 3 4 5:

定义两个指针p、q,q指向被插入的数据,p指向q的下一个数据,当每次q插入时,p q往后移动

2b6d3bbd21455abc04498eb2e65541fe.png

(11)更改数据 list_replace( )

823156d2316e24e217373aefa3ee29a7.png

(12)查找数据位置 list_search( )

5088c9efd6723956acb71044c3866318.png

(13)数据排列 list_merge( )

链表1数据1 2 5 7

链表2数据1 3 6 8

将其合成一个链表 1 1 2 3 5 6 7 8

0f8af8e692644467f1b8d7f08f2fb78e.png

创作不易,点赞+关注哦!!!

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

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

相关文章

多线程基础(二)pthread的了解

IOS中多线程的实现方案 了解NSOperation(代码) 所有的方法都是pthread开头的 然后再搞一条线程 pthread_create方法有返回值,作用:判断线程创建是否成功? 常用的方法: 退出的方法: 关于pthread代码几乎不用…

计算机专业技能高考试题素材,计算机技能高考模拟试题

计算机技能高考模拟试题(2016年湖北)《组装与维护模块》本套试卷选取3套高考模拟卷,自制而成,请同学们45分钟完成全部答题(2018-06-12)(标准:总分80分,48分及格,64分良好,64以上优秀)Ⅲ、计算机组装与维修(…

python爬虫requests源码链家_Python爬虫之---爬链家

一个简单的实例,可以采用。做的demo。 #!/usr/bin/python # -*- coding: utf-8 -*- # Time : 2020/6/4 15:55 # Author : Xuegod Teacher For # File : 01_get_price_test.py # Software: PyCharm第一步:下载所有的html 第二步:利用xpath爬取…

iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例

使用SWRevealViewController实现侧边菜单功能详解 下面通过两种方法详解SWRevealViewController实现侧边菜单功能: 1.使用StoryBoard实现 2.纯代码实现 前言:手机屏幕始终有限,如何在有限的展示空间提供便捷的导航入口呢?Facebook…

计算机网络基础大学教材,《计算机网络技术及应用——大学计算机基础教育规划教材》低价购书_教材教辅考试_孔网...

本书在介绍数据通信概念的基础上,分局域网、广域网和因特网三个模块详细讲述了计算机网络的基础知识,还介绍了网络安全和网络管理方面的实用技术。本书的内容是兼顾基础,突出应用。本书取材新颖,概念清晰,可作为理工科…

绘图的尺寸_Auto CAD机械绘图尺寸标注教程1(尺寸标注简介)

1、尺寸是工程图中不可缺少的一项内容,工程图中的图形只用来标识工程图形的形状,而工程形体的大小尺寸是靠尺寸来说明的,所以工程图图中尺寸必须标注得正确、完整、清晰、合理。工程图中尺寸标注包括:尺寸界线、尺寸线、尺寸起止符…

java并发核心知识体系精讲_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析

版权说明:本文内容根据 github 开源项目整理所得项目地址:https://github.com/Snailclimb/JavaGuide​github.com一、基础什么是线程和进程?何为进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统…

计算机专业 毕业论文 百度云,计算机专业毕业论文.pdf

XXXX 学院本科生毕业论文基于 VB 的人力资源管理信息系统的设计与实现院别 、专业 计算机科学与信息技术学院计算机科学与技术专业研 究 方 向 网络工程学 生 姓 名学 号指导教师姓名指导教师职称 讲 师20XX年 X 月 X 日大庆师范学院本科毕业论文 (设计 )摘 要为了提高人力资源…

python在linux中输出带颜色的文字的方法

在开发项目过程中,为了方便调试代码,经常会向stdout中输出一些日志,默认的这些日志就直接显示在了终端中。而一般的应用服务器,第三方库,甚至服务器的一些通告也会在终端中显示,这样就搅乱了我们想要的信息…

运用python的方式_对Python使用mfcc的两种方式详解

1、Librosa import librosa filepath "/Users/birenjianmo/Desktop/learn/librosa/mp3/in.wav" y,sr librosa.load(filepath) mfcc librosa.feature.mfcc( y,sr,n_mfcc13 ) 返回结构为(13,None)的np.Array,None表示任意数量 2、python_speech_features…

nginx加载图片慢_优化vue项目的首屏加载速度

最近使用vue-cli3构建了一个小型的博客系统,完工之后,build打包出来发现一个chunk-vendors包就有1.1m,部署上去之后,访问的时候,首屏加载非常慢。居然需要21s,体验极差。这是打包的结果截图根据这种情况&am…

Python.with.context-manager

Context Manager 1. Context Manager简介 "Context managers are a way of allocating and releasing some sort of resource exactly where you need it." Ref[4] 例如: 1 with file("/tmp/foo", "w") as foo: 2 print >> foo, &qu…

micropython移植教程_【教程】智能编程T-Watch手表初试micropython之电子秤教程

原标题:【教程】智能编程T-Watch手表初试micropython之电子秤教程 【项目的故事】 在极客玩具中,我一直喜欢穿戴类和小车类。前后做过两只运动心率表,并且参与过麦步手表的测试。TTGO最新出品了一块叫做T-Watch的手表,实际上&…

音乐和计算机跨界融合,音乐类综艺跨界融合有了新思路

图集8月9日《人民日报》刊文,对原创综艺节目《幻乐之城》匠心做原创的新思路、新经验、新趋势进行了表扬,文章指出:“音乐电影”的节目模式在呈现出音乐与电影双重质感的同时,也为国内音乐类综艺节目的跨界融合发展提供了新的思路…

mysql 下载到其他盘中_MYSQL 如果把数据文件保存到其他磁盘里

今天在CSDN上有人问起分开存储数据文件的问题。现在写下来。为了突破磁盘搜索的瓶颈。我们要把MYSQL的数据和索引保存到其他不同的磁盘中。目前还只是支持MyISAM引擎。在MYSQL中,官这个叫象征性链接。1、在WINDOWS下的象征性链接。数据库目录:E:/LAMP/my…

python定义了函数却显示未定义_python

我正在编写一个脚本,在我的脚本中,我具有以下功能: def insert_image(cursor, object_id, sku): product_obj core.Object.get(object_id) string_sku str(sku) folder string_sku[0] string_sku[1] string_sku[2] found_url False # K…

以下不属于计算机安全术语,基础知识(D).doc

1、计算机硬件是指组成计算机的任何机械的、磁性的、电子的装置或部件,其中微型计算机的主要组成部分有:A.CPU、存储器、基本输入输出设备和其他外围设备B.硬件系统和软件系统C.主机和系统软件D.主机和显示器答案:A (2)2、计算机网络的分类标…

java api项目配置统一的错误返回json提示

2019独角兽企业重金招聘Python工程师标准>>> 项目使用的json解析框架是fastjson自定义的返回对象如下:package com.test;public class ResultObj {private boolean result;private int code200;private String msg;private Object data;private PagerRes…

mysql没多久自动断开服务_mysql 长时间没连接了 就会自动断开服务

这是因为mysql 长时间没连接了 就会自动断开服务。 解决办法 1、首先,下载必须的jar包 dbcp 包,目前版本是1.2.1:http://jakarta.apache.org/commons/ dbcp / pool包,目前版本是1.3:http://jakarta.apache.org/commons…

python将print内容输入txt_Python将矩阵写入txt文件,保持格式

我正在努力把我的代码输出写入一个txt文件,同时保持格式。代码如下:import os # Compute matrix titles [Filename, Date] matrix [titles] for directory, __, files in os.walk(MY_DIRECTORY): # replace with actual directory path for filename i…