数据结构之线性链表

线性链表数据结构的实现与应用 本文还有配套的精品资源,点击获取 简介:线性链表是一种基础数据结构,具有灵活的内存分布,便于插入和删除操作。它由节点组成,每个节点包含数据域和指针域。该数据结构包括单链表、双链表和循环链表等类型,支持创建、插入、删除、查找和排序等操作。线性链表广泛应用于数据库、图形处理、堆栈、队列和哈希表等。与数组相比,链表具有动态扩展的优势,但访问速度和内存消耗方面有不足。理解并熟练使用... 阅读详情

线性表的链式存储结构的特点就是用一组任意的存储单元存储线性表的数据元素(数据单元之间的关系是可以连续的,也可以是不连续的)。

#include <stdio.h>
#include<stdlib.h>

#define ERROR 0
#define OK 1
#define OVERFLOW -2
typedef int Status ;
typedef int ElemType;



typedef struct LNode
{
	ElemType data;
	struct LNode* next;
}LNode;

typedef LNode* LinkList;	//指向单链表的指针

Status initList(LinkList *L)
{
	(*L) = (LinkList)malloc(sizeof(LNode));
	if(!(*L))
		exit(OVERFLOW);
	(*L)->next = NULL;
	
	return OK;
}



Status insertElement(LinkList L, int i, ElemType e)
{
	LinkList p, s;
	int j;
	
	p = L;
	j = 0; 
	
	while(p && j<i-1)					//寻找第i-1个结点 
	{
		p = p->next;
		++j;
	}
	
	if(!p || j>i-1)
		return ERROR;

	s = (LinkList)malloc(sizeof(LNode));
	if(!s)
		exit(OVERFLOW);
	s->data = e;
	s->next = p->next;
	p->next = s;

	return OK;
}


Status getElement(LinkList L, int i , ElemType &e){

	LinkList p = L;
	int j = 0;
	while(p && j<i){
		p = p->next;
		++j;
	}
	if(!p || j>i)
		return ERROR;
	e = p->data;
	return OK;
}

Status deleteElement(LinkList L , int i , ElemType &e){

	LinkList p = L , s;
	int j = 0 ;
	while (p && j<i){
		p = p->next;
		++j;
	}
	if(!p->next || j>i)
		return ERROR;
	e = p->data;
	s = p->next;
	p->next = s->next;//(相当于p->next = p->next->next)
	return OK;
}

Status updateElement(LinkList L , int i , ElemType e){

	LinkList p = L;
	int j = 0 ; 
	while ( p && j<i){
		p = p->next;
		++j;
	}
	if(!p || j>i)
		return ERROR;
	p->data = e;
	return OK;
}
//按照下标查找,返回该位置的值与getElement方法重合
/*Status locateElement(LinkList L , int i , ElemType &e){

	LinkList p = L;
	int j = 0;
	while( p && j<i-1){
		p = p->next;
		++j;
	} 
	if(!p || j>i)
		return ERROR;
	e = p->data;
	return OK;
}*/

//按照数值查询,返回该数值的下标
int LocateElement(LinkList L , ElemType e){
	LinkList p = L;
	int j = 0;
	while (p && p->data != e ){
		p = p->next;
		++j;
	}
	return j;
}

int main (){
	LinkList l;
	initList(&l);
	int e , e1;
	//ElemType j =0;
	insertElement(l , 0 , 12);
	insertElement(l , 1 , 4);
	insertElement(l , 2 , 55);
	insertElement(l , 3 , 555);
	updateElement(l, 2 , 44);
	deleteElement(l , 2 , e);
	getElement(l , 2 , e1);
	ElemType g = 555;
	int j = LocateElement(l , g);
	printf("值为:%d\n", j);
	printf("%d\n", e);
	printf("%d\n", e1);

}

 

数据结构之线性表的链式存储结构 数据结构线性表的链式存储结构,使用c语言完成。线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素。 立即下载

相关推荐

线性链表的实现

具有链接存储结构的线性表,它用一组地址任意的存储单元存放线性表中的数据元素,逻辑上相邻的元素在物理上不要求也相邻,不能随机存取。一般用结点描述:结点(表示数据元素) =数据域(数据元素的映象) + 指针域(指示后继元素存储位置)

数据结构之线性表(链表实现)

首先,我们需要定义链表中的节点结构。每个节点包含两个部分:存储的数据(类型为T)和指向下一个节点的指针。// 链表节点public:// 存储的数据T data;// 指向下一个节点public:// 默认构造函数// 拷贝构造函数// 带参数构造函数使用链表实现的线性表是一种常见的数据结构,它通过链式存储方式来存储元素,每个元素都包含一个指向下一个元素的指针。相比于使用数组实现的线性表,链表在插入和删除操作上更加灵活,因为它们只需要更改相邻元素的指针即可,而不需要移动元素。

SurpriseKuang的博客 619

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1005

数据结构与算法——线性表(链表篇)_线性链表

上一文数据结构与算法——线性表(顺序表篇)中详细介绍了线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻,因此可以随机存取表中的任一元素,它的存储位置可用一个简单直观的公式来表示。在做插入和删除操作时,需要移动大量元素。本篇文章,我将详细介绍线性表的另外一种表示方式——链式存储结构。由于链式存储结构不要求逻辑上相邻的元素在物理位置上也相邻,因此它没有顺序存储结构所具有的弱点,但同时也失去了顺序表可随机存取的优势。

2401_84182906的博客 468

开源人形机器人硬件生态:关键技术、产业链与低成本突破 | OpenLoong 社区线下分享会

本文将深入探讨人形机器人硬件平台的关键技术、产业链与核心部件以及降低成本的策略。从硬件平台的核心技术,到机器人核心零部件的详细介绍,再到产业链各环节的协同发展以及实现低成本化的创新思路,将一同剖析人形机器人迈向广泛应用所面临的挑战与机遇,展望其未来的发展趋势,为开发者和相关从业者提供一些参考与启示。

OpenLoong_的博客 2419

保姆级拆解:HP 1312NF/CM1415打印机进纸离合器清洁与更换全记录(附B站/油管视频指路)

本文详细记录了HP 1312NF打印机进纸离合器故障的诊断与修复全过程,包括故障判断、工具准备、拆解步骤、清洁更换技巧及预防措施。特别针对离合器内部海绵老化粘连问题,提供了电工胶布和硬纸片两种实用替代方案,并附有B站/油管视频指路,帮助用户轻松完成打印机维修。

weixin_31102231的博客 374

无头单链表—简单功能的实现

单链表的头文件如下: #include "Slist.h" void SlistPrint(SlistNode* plist){ SlistNode* cur = plist; while (cur != NULL){ printf("%d->", cur->data); cur = cur->next; } printf("NULL\n"); } SlistN...

weixin_45636889的博客 264

用deepseek部署全自动的机器人--bytebot

Bytebot是一款开源AI桌面代理,提供完整的虚拟桌面环境,支持跨应用任务处理、文件管理、文档处理等复杂工作流。其技术架构包含核心控制、LLM代理、UI等组件,支持Docker和Kubernetes部署。本文演示了基于CloudStudio的部署流程,包括环境配置、Docker部署及DeepSeek API集成,实现多模型调用功能。

Kin 2480

数据结构-线性表与链性表(二)

线性数据结构与非线性数据结构crud操作时间复杂度解析

平凡之路无尽路的博客 1344

从交换机安全配置,看常见局域网攻击

前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻击方式,自然是建立在交换机安全配置之上来说的。我们通过h3c官方提供的《H3C 交换机安全加固手册》和《安全配置指导》,从这两份手册可以看出交换机支持的安全配置非常多,基本已经覆盖了各种我们熟知局域网攻击。下面就挑几个典型的攻击方式进行演示。 arp欺骗 【一>所有资源获取&lt

kali_Ma的博客 1万+

黑客渗透测试后门隐藏技术揭秘

本文介绍了在授权渗透测试中隐藏后门文件(muma.exe)的多种技术手段。主要包括:通过WinRAR自解压脚本将后门与正常程序捆绑实现双开;利用系统自动运行目录和注册表实现开机自启;修改文件图标伪装成常用软件;将文件存放在冷门系统目录;设置系统+隐藏双重属性增强隐蔽性。此外还涉及对抗安全软件的加壳(UPX)、免杀(msfvenom编码)技术,以及进程注入、日志清除等运行隐藏方法。所有技术仅限合法授权测试使用,未经授权使用将面临法律责任。

m0_60781580的博客 1040

数据结构C语言版线性链表的12个基本操作

线性链表的12个基本操作 分别是:构造 销毁 清空      判空  表长 取元      定位  前驱 后继      插入 遍历;在此为了好记我分别二字短语三三结合 ,接下来会一一解释。 头文件和宏定义 #include #include #include #include using namespace std; #define  TURE     1 #define  FA

lingxiao的博客 1万+

delphi fmx android 自动更新(一)

所以,如果是http 则,manifest.xml application 下,https无需添加。增加android:usesCleartextTraffic="true",不然无法使用http下载东西。1,REQUEST_INSTALL_PACKAGES 权限。4,WRITE_EXTERNAL_STORAGE 权限。3,READ_EXTERNAL_STORAGE 权限。一般是从http下载安装包 apk。2,INTERNET 权限。sFile为apk包路径。

全粘工程师 550

数据结构实验-顺序表和线性链表

数据结构实验-顺序表和线性链表

Kethy__的博客 491

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

数据结构:线性链表

视频看再多不如自己亲手敲一遍!!! 内容:数据结构第二章线性链表C语言代码实现 参考书:数据结构严书,高一凡数据结构与算法 测试软件:Visual Studio 2017 坚持天数:3 c1.h: #ifndef __C1_H //#define __C1_H //c1.h(头文件名) #include <string.h> //字符串函数头文件 #include <c...

GaodadaMaster的博客 392

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

数据结构(一)线性链表、非线性链表、稀疏数组与队列、单向链表

数据结构和算法的关系 ➢数据data结 构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了 数据结构.学好数据结构可以编写出更加漂亮更加有效率的代码。 ➢要学习好数据结构就要多多考虑如何将生活中遇到的问题,用程序去实现解决. ➢程序=数据结构+算法 ➢数据结构是算法的基础,换言之,想要学好算法,需要把数据结构学到位。 线性链表和非线性链表 数据结构包括:线性结构和非线性结构。 线性结构 1)线性结构作为最常用的数据结构,其特点是数据元素之间存在- -对- - 的线性关系(a[0]=3

codinglover5的博客 3675

python线性链表_Python实现数据结构线性链表(单链表)算法示例

本文实例讲述了Python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下:初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。#!/usr/bin/python# -*- coding:utf-8 -*-# Author: Hui# Date: 2017-10-13# 结点类,class Node:def __init__(self, data)...

weixin_39976733的博客 109

数据结构线性链表类

头文件:///////////////////////////////////////////////////////////////////////////* Author: bizhu12 *//* Timer : 2011.07.02

bizhu的专栏 1044

数据结构之线性链表(python)

概念 线性链表,顾名思义类似于一条链子的表,与线性链表相对的是线性顺序表,二者的区别是,线性顺序表需要在内存中开辟一块连续的区域,因此存储的数据在内存中的状态是连续的,而线性链表在内存中的存储是随机的,数据之间的连接靠的是指针。 存储结构 class ListNode: def __init__(self, val): self.val = val ...

比海更深 1万+

python链表_实例详解Python实现数据结构线性链表(单链表)算法

Python实现数据结构线性链表(单链表)算法示例本文实例讲述了Python实现数据结构线性链表(单链表)算法。分享给大家供大家参考,具体如下:初学python,拿数据结构中的线性链表存储结构练练手,理论比较简单,直接上代码。#!/usr/bin/python# -*- coding:utf-8 -*-# Author: Hui# Date: 2017-10-13# 结点类,class Node...

weixin_39618597的博客 296

数据结构(C语言版)严蔚敏——2.3线性链表类型定义

@说明: 本代码对应《数据结构(C语言版)严蔚敏》第二章第三节中抽象数据类型线性链表的实现。 本代码分为三个文件:LinkList.h定义着线性链表抽象数据对象与基本操作;LinkList.cpp是对LinkList.h头文件中基本操作的具体实现;TestMain.cpp是一部分对线性链表实现过程的测试。 1:LinkList.h文件 #include<stdio.h> #define...

qq_38850266的博客 1152

数据结构--线性链表

线性表的链式存储结构 顺序存储结构逻辑和物理都相邻,有随机访问的优势,也有插入删除时时间复杂度高的缺点,链式结构正是为了克服这个缺点,它不要求物理相邻,它也可以物理相邻,所以我们只关系它的逻辑结构。 线性链表 每个节点有一个数据域,也有一个指向下一个节点的指针,开头可以有一个头节点指向第一个节点,最后一个节点指针域为NULL,也就是若为空表,则头节点的指针域为空,若销毁链表,则头节点一起销毁。 t...

工农村贴膜小哥的博客 749
上一篇: 数据结构之顺序表的实现
下一篇: JQuery使用validate插件完成校验
silentkunden
博客等级 码龄9年 28粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值