数据结构——线性表

对于数据结构,大致分为四种基本类型:
	集合:元素之间没有任何关系
线性表:元素之间存在一对一关系(数组)
	数组、链表、功能受限的表(栈、队列)
树:元素之间存在一对多关系
	普通数、二叉树、完全二叉树、满二叉树、有序二叉树
图:元素之间存在多对多关系
	邻接表、表的遍历(深度优先、广度优先)、最短路径

这篇主要讲表。
表,是一种线性结构,在实际应用中体现为两种,根据逻辑结构来分,分为栈和队列,根据存储结构来分,分为顺序表和链式表。
栈(逻辑结构)
限制为只有一个元素进出元素,就导致先进后出和特性
顺序栈(容量有限)、链式栈(可以无限容量)。
一般用于表达式解析,内存管理(为函数的调用提供支持)。

顺序栈:基本结构:

typedef struct Stack
{
	TYPE* arr;//内存首地址
	int len;//栈的内量
	int top;//栈顶的下标
}Stack;

链式栈基本结构:

typedef struct Stack
{
	Node* top;//栈顶长度
	size_t len;//自定义长度
}Stack;

队列(逻辑结构)
限制为有一个端口进出元素,一个只管进,另一个只管出,就导致先进先出
顺序队列
链式队列
顺序队列基本结构:

typedef struct Queue
{
	TYPE* base;
	int size;		//容量
	int head;		//队头	
	int tall;		//队尾
	int cnt;		//数量
}Queue;

链式队列基本结构:

typedef struct Queue
{
	Node* head;//头指针
	Node* tail;//尾指针
	size_t size;/长度
}Queue;

链表,单向链表:


typedef struct Node
{
	TYPE data;			// 数据
	struct Node* next;	// 后一个元素
}Node;// 创建节点

Node* creat_node(TYPE data)
{
	Node* node = malloc(sizeof(Node));
	node->data = data;
	node->next = NULL;
	return node;
}

typedef struct List
{
	Node* head;
	Node* tail;
	size_t size;
}List;

双向链表:

typedef struct Node
{
	struct Node* prev;	// 前一个元素
	TYPE data;			// 数据
	struct Node* next;	// 后一个元素
}Node;

// 创建节点
Node* creat_node(TYPE data)
{
	Node* node = malloc(sizeof(Node));
	node->prev = NULL;
	node->data = data;
	node->next = NULL;
	return node;
}

typedef struct List
{
	Node* head;
	Node* tail;
	size_t size;
}List;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值