数据结构学习之 链表

【数据结构】浅谈数据结构-链表【思路+例题学习】 数据结构--链表讲解 阅读详情
链表的定义
#define NULL 0
#define LEN sizeof(Lnode)

typedef int elemtype;
struct Lnode
{
	elemtype data;
	struct Lnode *next;
};
struct Lnode *head,p;

1单链表的初始化
struct Lnode *initlist(struct Lnode *head)
{
	head=NULL;
}
2.单链表的置空
struct Lnode *clearlist(struct Lnode *head)
{
	struct Lnode *p;
	while(head!=NULL)
	{
		p=head;
		head=head->next;
		free(p);
	}
}
3.判断单链表是否为空
int emptylist(struct Lnode *head)
{
	return(head!=NULL);
}
4.求单链表的长度
int lengthlist(struct Lnode *head)
{
	struct Lnode *p;
	int j=0;
	p=head;
	while(p!=NULL)
	{
		p=p->next;
		j++;
	}
	return (j);
}
5.取单链表的一个元素
elemtype getlist(struct Lnode *head ,int i)
{
	int j=0;
	struct Lnode *p;
	p=head;
	while ((p!=NULL)&&(j<i))
	{
		p=p->next
		j++;
	}
	if(p!=NULL)
		return(p->data);
	else 
		return(0);
}
6.在单链表中查找数据元素
 elemtype search(struct Lnode *head ,elemtype key)
 {
	 struct Lnode *p;
	 int z=0;
	 if(head==NULL)
		 printf("its empty")
	else
		p=head;
	while(p->data!=key&&p->next!=NULL)
		p=p->next;
	if(p->data==key)
		z=key;
	else
		z=0;
	return(z);
 }
 
7.在单链表中删除元素
struct Lnode *delete(struct Lnode *h ,int i)
{
	struct Lnode *p,*q;
	p=h;
	int j=1;
	while((j<i)&&(p!=NULL))
	{
		q=p;
		p=p->next;
		j++;
	}
	if((p!=NULL)&&(p->next!=NULL))
	{
		q->next=p->next;
		free(p);
	}
}
8.在单链表中给定位置pos_key前插入关键字ins_key
insert(struct Lnode *h,int pos_key,int ins_key)
{
	struct Lnode *p,*q,*s;
	if(h==NULL)
	{
			s=(struct Lnode *) malloc(LEN);

		s->data=ins_key;
		s->next=h;
		h=s;
	}//把关键字插入头元素
	else if (h->data==pos_key)
	{		s=(struct Lnode *) malloc(LEN);

		s->data=ins_key;
		s->next=h;
		h=s;
	}
	else if (h->next==NULL&&h->data!=pos_key)
	{		s=(struct Lnode *) malloc(LEN);

		s->data=ins_key;
		s->next=NULL;
		h->next=s;
	}
	else if (h->next!=NULL&&h->data!=pos_key)
	{
		s=h;
		p=s->next;
		while(p->next!=NULL&&p->data!=pos_key)
		{
			s=p;
			p=p->next;
		}
				s=(struct Lnode *) malloc(LEN);
				s->data=ins_key;
				s->next=p->next;
				p->next=s;
		
	}
}
 

双链表

typedef int elemtype;
struct Dnode{
	elemtype data;
	struct Dnode *fnext;
	struct Dnode *bnext;
};
struct Dnode *Dlist;
1.在双链表中p指向的节点前插入一个数据元素x
insdlist (struct Dnode *p,elemtype x)
{
	struct Dnode *q ,*k;
	q=(struct Dnode *) malloc (sizeof(struct Dnode));
	q->date=x;
	q->bnext=p;
	q->fnext=p->fnext;
	k=p->fnext;
	k->bnext=q;
}
2.双链表的的删除
deldlist(struct Dnode *p)
{
	p->fnext->bnext=p->bnext;
	p->bnext->fnext=p->fnext;
	free(p);
}

 

数据结构——线性表(链表) c语言 学习笔记 /数据域//指针//linklist=node* 强调该指针是头结点// node*q 强调该指针是一个普通指针。 阅读详情

相关推荐

2023西工大NOJ (C语言版) 完结!!!

代码均可AC,不含解析。

annesede的博客 8万+

【数据结构】链表

链表

knous 6万+

企业级防火墙实战:用深信服AF8.0打造安全办公网络(含流控/僵尸防护配置)

本文详细介绍了如何利用深信服AF8.0防火墙构建企业级安全办公网络,涵盖设备初始化、多接入方式配置、三维一体安全防护体系(包括应用控制、僵尸防护和智能流控)以及典型问题排查。通过实战案例和配置模板,帮助IT管理员高效部署和优化网络安全管理,提升企业网络安全防护能力。

weixin_28716443的博客 282

数据结构入门——链表

链表学习笔记

YX_Feather的博客 687

Proxmox VE网络配置踩坑实录:从Web界面无法访问到完美修复的全过程

本文详细记录了Proxmox VE服务器Web界面无法访问的完整排查与修复过程。作者从基础网络连通性测试入手,逐步排查了服务状态、SSL证书、端口监听、防火墙规则及网关配置,最终定位并解决了问题。文章提供了系统性的故障排查思路和实用的修复命令,对管理Proxmox VE网络具有重要参考价值。

weixin_29231221的博客 890

2024年12月数据月报

2024年12月大数据月报,为您准备了阿里、字节、百度等大厂150多篇实践案例

SmartSi 2656

单链表的一些操作

单链表的一些操作,如链表的交、并、差

思考,思考,再思考~ 1431

YOLOv11改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例

本文记录的是基于SimAM注意力模块的YOLOv11目标检测方法研究。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。

Limiiiing的博客 9044

链表的处理(《数据结构》例题)

#include"stdio.h"#include"stdlib.h"#define ElemType inttypedef struct node{ ElemType data;struct node *next;}Lnode;Lnode *p,*q,*s,*head;void outlin(Lnode *h);void creat();void insert(Lnode *h,ElemType

dabusidexiaoqiang的专栏 615

DICOM图像知识:深入详解DICOM的层级关系

解析DICOM的四个主要层级:Patient(患者)、Study(检查)、Series(序列)和SOP(服务-对象对),探讨它们之间的关系、各自的唯一标识符以及在实际应用中的用途

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3305

物料分类账-返工工单(自身)差异分摊逻辑

如上图所示,当月入库的全部消耗,而返工消耗的数量为100PCS,所以返工消耗占总消耗的比例为100pcs/(205pcs+100pcs)=0.327868852。备注:红色箭头的物料号为产品自己本身所产生的价差,就是返工工单所承担的差异,而我们要计算的就是这个值,所以计算价差不会包括此项。价差合计就是不包括初始分摊的价差9153.7,剩下的价差合计就是返工工单自身所承担的差异4465.21。每一次返工工单所承担的差异都会按照价差*承担比例去计算承担的差异,知道承担完所有差异。

Yeol827的博客 2495

数据结构和算法(四)链表相关面试题

数据结构和算法(四)链表相关面试题1. 数据结构和算法(四)链表相关面试题1.1 链表算法题详解1.1.1 1. 数据结构和算法(四)链表相关面试题 1.1 链表算法题详解 1.1.1 ...

kyl282889543的博客 498

【报错】open /var/lib/docker/tmp/docker-import-863402796/bin/json: no such file or directory

然后,通过docker images可以看到镜像已经加载进来了。然后,通过docker images可以看到镜像已经加载进来了。

静谧、淡雅 6226

数据结构 链表学习总结

数据结构 其二 链表 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 前言 线性表是数据结构中最基础也是最常见的一种结构,它像一根“线”把数据像“串珠子”一样串联了起来。根据数据在内存中是否连续,可以把线性表分为:顺序表和链表 ,本文详细介绍链表。 1. 链表介绍 1.1 什么是链表 链表(linked list),将数据如同锁链一样串联起来,每一个存储数据的节点不仅存储的数据(数据域)还存

sumandavg的博客 1444

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

数据结构学习之链表总结

birdexplore的博客 213

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数据结构链表结构体定义_学习数据结构02链表

数据结构链表结构体定义So here we are, in the previous post, we learnt array and how it is stored in memory under the hood. However, we also have looked into its drawbacks too. Then what substitute data structure...

weixin_26741235的博客 705

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数据结构--链表学习小结

数据结构链表学习小结 学习内容: 链表 是一种数据结构,在内存中通过 结点记录内存地址 而相互链接形成一条链的储存方式。相比数组而言,链表在内存中不需要连续的区域,只需要每一个结点都能够 记录下一个结点 的 内存地址 ,通过 引用 进行查找,这样的特点也就造就了 链表 增删操作时间消耗很小,而查找遍历时间消耗很大的特点。 单链表: 一般单链表有以下几种方法: append 在链表尾部添加一个元素...

qq_44392254的博客 543

数据结构学习笔记——链表

逻辑结构都是线性表,一对一的关系。创建:链表更方便销毁:链表要依次free;对于静态分配的话,系统自动回收,对于malloc要配合free适用。增删:顺序表把插入位置前后统一移动;链表只需要修改指针;时间复杂度都是O(n),但是考虑实际的化,链表效率会更高。查找:顺序表按值查找O(log2(n)),对于链表都是O(n),链表更好经常增删用链表。经常查询搜索用顺序表。

qq_53000090的博客 875

数据结构学习感悟:从链表到哈夫曼树的感悟

在计算机科学的学习过程中,数据结构是构建高效算法的基石。我学习了。

qq_56718048的博客 575

学习笔记—数据结构—单链表

单链表是一种基本的数据结构,它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的指针。在单链表中,每个节点的地址不一定是连续的,而是通过指针相互链接起来。单链表的特点是存储灵活,可以动态地添加或删除节点,不需要预先分配固定大小的存储空间。

2401_83231468的博客 1005

数据结构学习2——单链表

数据结构学习2——单链表 - romi - 博客园 (cnblogs.com)

唐攀的博客 130

学习笔记—数据结构—双链表

双链表又称带头双向循环链表,它是一种特殊的数据结构,它结合了双向链表和循环链表的特点。在双链表中,每个节点除了拥有指向下一个节点的指针外,还拥有指向上一个节点的指针。此外,列表的头节点和尾节点通过这些指针相互连接,形成一个闭环。这种结构允许从任何一个节点开始,既可以向前遍历,也可以向后遍历,直到回到起点,从而实现高效的双向遍历。每个节点包含数据部分和两个指针部分,分别指向前一个节点和后一个节点。头节点是双向循环列表的起始点,它的前驱指针指向自己,后继指针也指向自己,形成一个闭环。

2401_83231468的博客 889

数据结构学习3——双链表

数据结构学习3——双链表 - romi - 博客园 (cnblogs.com)

唐攀的博客 117

(一)Android数据结构学习之链表

需要看本系列其他文章的请转到: - (一)Android数据结构学习与算法之链表 - (二)Android数据结构学习与算法之数组 - (三)Android数据结构学习与算法之队列前言我们都知道Android是基于java的,Java中实现了很多数据结构,像我们最常使用的数组、List都是数据结构,当我们使用的时候可能会觉得这些东西真是方便,但是并不知道其中原理,很多好的公司招人会

u010618194的博客 6380

C语言数据结构学习:单链表

C语言数据结构学习:单链表

L_Z_J_I的博客 977

数据结构学习——双向链表

双向循环链表的创建及增删改查

YiHeboy的博客 1175
上一篇: 数据结构学习之 堆栈
下一篇: 数据结构学习之二叉树
杨鼎睿
博客等级 码龄9年 7粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值