数据结构复习笔记(表结构)

数据结构复习笔记(表结构)

线性结构:一对一

顺序存储 如:数组
链式存储 如:链表

顺序表

一般以数组的形式实现
存取方式:随机存取
查找方便,插入删除元素麻烦

链表

链表,线性链表,循环链表,双向链表
存取方式:顺序存储

链表的实现:
typedef struct Node
{
		Type  data;   //数据域
		struct Node  *next;   //指针域
} Node, *LinkList;

//p为指针
LinkList p =new(Node);

画图理解前插法,尾插法。
以及链表的插入,删除的操作

题:两个链表的合并

链表的查找比顺序表慢,插入删除较为简单。

循环链表

最后一个指针的next指向头

双向链表

每个节点有两个指针,指向前驱与后继,相对而言操作会多一点所以编程前最好画一个示意图

想象一下一个弹夹,先压入的子弹后射出。
栈就是这样,FILO

数组与链表都可以用来实现栈

栈的实现
//顺序存储
typedef struct
{
	Type *base;  //栈底指针
	Type *top;  //栈顶指针
	int stacksize;  //当前分配的存储容量
} SStack;   //顺序栈结构类型

//链式存储
typedef struct SNode
{
	Type data;   //数据域
	struct SNode *next;   //指针域
} SNode, *LinkStack;

队列

参考排队的情况
FIFO

队列实现
//顺序队列
typedef  struct
{
	Type *front; //队首指针
	Type *rear; //队尾指针
	int  queuesize;   //当前分配的存储容量
} SQueue; //顺序队列结构类型

//链队列
typedef struct QNode
{
	Type data;   //数据域
	struct QNode *next;   //指针域
} QNode, *LinkQueue;   //链队列结构类型
循环队列

主要针对顺序队列浪费问题,参考衔尾蛇。
对链式队列,直接构造环即可。
对于顺序队列,在队列不满时,使用% 找寻空位。

栈与队列应用

括号匹配检验
算术表达式求值
递归算法

串(字符串):是零个或多个字符组成的有限序列。记作: S=“a1a2a3…”,其中S是串名,ai(1≦i≦n) 可以是字母、数字或其它字符

//顺序存储结构
#define MAX_STRLEN  256
typedef  struct
{  char  str[MAX_STRLEN] ;
int  length;
} StringType ;   

//链式存储
#define BLOCK_SIZE  3
typedef  struct  Blstrtype
{  char  data[BLOCK_SIZE] ;
struct  Blstrtype  *next;
}BNODE ;

广义表

主要考gettail,gethead、
理解head与tail即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值