IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构-双链表、循环链表、静态链表(c语言版) -> 正文阅读

[数据结构与算法]数据结构-双链表、循环链表、静态链表(c语言版)

双链表

双链表
对比与单链表多一个结构体指针指向前一个节点

typedef struct DNode{
int e;//存储的数据可以换成别的数据
struct DNode *next,*prior;
}DNode,*DLinkList;

piror指针指向前一个节点

双链表初始化

#define bool char
#define true 1
#define false 0//用来在c语言实现使用bool类型的效果
#include <stdio.h>
typedef struct DNode{
int e;//存储的数据可以换成别的数据
struct DNode *next,*prior;
}DNode,*DLinkList;

bool InitDLinkList(DLinkList L){
	L=(DLinkList)malloc(sizeof(DNode));
	if(L=NULL)
	return false;
	L->next=NULL;
	L->priot=NULL;
	return true;

}

在这里插入图片描述

双链表的插入

这里我只写后插操作的代码
因为位序插入的代码
可以通过找到i-1的节点然后进行后插操作来完成

//前面的bool类型和导库和结构体我就不写了
bool(DLinkList P,DLinkList S){//把S节点插入P节点后面
	if(P=NULL||S=NULL)
	return false;
	S->next=P->next;//该语句不管P有无后继节点,都可以实现
	if(P->next!=NULL)
	P->next->prior=S;//该语句如果P没有后继节点才会异常,现在有无后继节点都可以插入
	P->next=S;
	S->prior=P;
		
	
}

在这里插入图片描述

双链表的删除

删除P节点的后继节点

bool DeleteNextNode(DLinkList P){
	if(P==NULL)
	return false;//(没有给定的该节点)
	DLinkeList L=P->next;
	if(L=NULL)
	return false;//(没有后继节点)
	P->next=L->next;
	if(L!=NULL)//(后继节点的后继节点不为空,才有prior)以防后继节点next指向NULL
	P->next->prior=P;
	free(L);
}

双链表的遍历

在这里插入图片描述

小结

在这里插入图片描述

循环链表

所谓循环链表就是
把最后一个节点的的next指向第一个节点
如图
在这里插入图片描述
这样给其中的任一个节点就能遍历整个链表

单链表版

typedef struct Node{
int e;//存储的数据可以换成别的数据
struct Node *next;
}LNode,*LinkList;

初始化

bool InitList(LinkList L){
	L=(LinkList)malloc(sizeof(LNode));
	if(L==NULL)
	return false;
	L->next=L;//刚开始最后一个节点就是第一个节点,所以指向他自己
	return true;
	
}

在这里插入图片描述

双链表版

typedef struct DNode{
int e;//存储的数据可以换成别的数据
struct DNode *next,*prior;
}DNode,*DLinkList;

初始化

在这里插入图片描述

图示
在这里插入图片描述

插入与删除

因为循环链表不存在说
next指向NULL的情况
所以不用考虑NULL指针异常的情况
在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

静态链表(少考)

什么是静态链表

在这里插入图片描述
系统申请一片连续空间
一个节点存储
一个数据和下一个数据的游标
(底层是根据对应节点占的空间进行内存的±然后找到对应的节点,因为是连续的内存空间喽喽)

定义一个静态链表

一般我们想的方法
在这里插入图片描述

课本上的定义
typedef延伸
在这里插入图片描述

这样定义
相当于
每定义一个SLinkList a
就相当于
struct Node a[10]

相关基本操作

在这里插入图片描述

在这里插入图片描述

优缺点

在这里插入图片描述

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-15 02:14:53  更:2022-09-15 02:17:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 18:45:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码