首页
壁纸
留言
挚爱
友链
关于
更多
统计
Search
1
自动化推送每日60S新闻
58 阅读
2
我的开始
52 阅读
3
过来听会歌吧
49 阅读
4
天气每日推送
43 阅读
5
数据结构之队列
35 阅读
自动化
Java
计算机基础知识
数据结构
操作系统
计算机组成原理
计算机网络
typecho
无线电
就爱瞎折腾
其他
树洞
登录
Search
标签搜索
数据结构
自动化
计算机组成原理
树洞
typecho
网易云
音乐
折腾
存储系统
进制转换
编码
数值
MathJax
LaTeX
KaTeX
听歌
队列
青龙面板
冉冉升起的ShallGoing
累计撰写
20
篇文章
累计收到
1
条评论
首页
栏目
自动化
Java
计算机基础知识
数据结构
操作系统
计算机组成原理
计算机网络
typecho
无线电
就爱瞎折腾
其他
树洞
页面
壁纸
留言
挚爱
友链
关于
统计
搜索到
7
篇
分类为
计算机基础知识
的文章
2024-07-28
数据结构之线性表
线性表 (Linear List)1. 概述线性表(Linear List)是一种最基本、最常用的数据结构。它是由同类型数据元素构成的有限序列。根据存储方式的不同,线性表可以分为顺序表(顺序存储)和链表(链式存储)。2. 线性表的定义线性表是由 n 个元素构成的有序序列。通常表示为:[ L = {a_1, a_2, a_3, \ldots, a_n} ]其中:( L ) 是线性表的名字。( a_i ) 表示线性表中的第 ( i ) 个元素。( n ) 表示线性表中的元素个数。3. 线性表的类型线性表按存储结构分为两种类型:顺序表(Sequential List):使用一段连续的存储单元依次存放线性表的各个元素。链表(Linked List):使用一组任意的存储单元存放线性表的各个元素,这些存储单元可以是连续的,也可以是不连续的。4. 顺序表4.1 顺序表的定义顺序表是一种线性表,其数据元素按顺序存储在一块连续的内存空间中。4.2 顺序表的基本操作初始化顺序表#define MAXSIZE 100 typedef struct { int data[MAXSIZE]; int length; } SeqList; void InitList(SeqList *L) { L->length = 0; }插入元素bool ListInsert(SeqList *L, int i, int e) { if (i < 1 || i > L->length + 1) return false; if (L->length == MAXSIZE) return false; for (int j = L->length; j >= i; j--) { L->data[j] = L->data[j-1]; } L->data[i-1] = e; L->length++; return true; }删除元素bool ListDelete(SeqList *L, int i, int *e) { if (i < 1 || i > L->length) return false; *e = L->data[i-1]; for (int j = i; j < L->length; j++) { L->data[j-1] = L->data[j]; } L->length--; return true; }查找元素int LocateElem(SeqList L, int e) { for (int i = 0; i < L.length; i++) { if (L.data[i] == e) { return i + 1; } } return 0; }5. 链表5.1 链表的定义链表是一种线性表,其数据元素的存储单元可以是非连续的,通过指针链接各个元素。5.2 链表的基本操作定义单链表节点结构typedef struct Node { int data; struct Node *next; } Node, *LinkList;初始化链表void InitList(LinkList *L) { *L = (LinkList)malloc(sizeof(Node)); if (*L == NULL) exit(1); (*L)->next = NULL; }插入元素bool ListInsert(LinkList L, int i, int e) { LinkList p = L; int j = 0; while (p && j < i - 1) { p = p->next; j++; } if (!p || j > i - 1) return false; LinkList s = (LinkList)malloc(sizeof(Node)); s->data = e; s->next = p->next; p->next = s; return true; }删除元素bool ListDelete(LinkList L, int i, int *e) { LinkList p = L; int j = 0; while (p->next && j < i - 1) { p = p->next; j++; } if (!(p->next) || j > i - 1) return false; LinkList q = p->next; p->next = q->next; *e = q->data; free(q); return true; }查找元素LinkList GetElem(LinkList L, int i) { LinkList p = L->next; int j = 1; while (p && j < i) { p = p->next; j++; } if (!p || j > i) return NULL; return p; }6. 线性表的应用线性表在许多领域有广泛应用,例如:存储有序数据实现栈和队列实现字符串处理实现其他复杂数据结构的基础线性表作为数据结构的基础,其理解和应用对编程和算法设计非常重要。以上内容涵盖了线性表的基本概念、类型及其常见操作,希望对你有所帮助。
2024年07月28日
12 阅读
0 评论
0 点赞
2024-07-27
数据结构之图
关于图下面一个就是图的广搜和深搜先来谈一谈广搜,广搜就和树的层次遍历很相似。可以说某种程度上树的层次遍历就是图的广搜。树就是图的一种罢了。图的广度优先遍历什么图的深度优先遍历
2024年07月27日
8 阅读
0 评论
0 点赞
1
2