吉林企业做网站,工业园区门户网站建设方案,网站用户模板,郑州做网站公司汉狮摘录于老师的教学课程~~(*๓╰╯๓)~~内含链表、队列、栈、循环队列等详细介绍~~
基础知识系列 有空再继续更~~~
目录
【链表】
一、单链表
1、存储结构#xff1a;带头结点的单链表
2、单链表结点类型的定义
3、创建单链表 1#xff09;头插法 2#xff09;尾插法
…摘录于老师的教学课程~~(*๓´╰╯๓)~~内含链表、队列、栈、循环队列等详细介绍~~
基础知识系列 有空再继续更~~~
目录
【链表】
一、单链表
1、存储结构带头结点的单链表
2、单链表结点类型的定义
3、创建单链表 1头插法 2尾插法
4、单链表插入结点
5、单链表删除结点编辑
6、单链表的遍历模型 1模型1指向头结点 2模型2指向首结点
二、双链表
1、存储结构带头结点的双链表
2、双链表结点类型的定义
3、创建双链表 1头插法 2尾插法
4、双链表插入结点 方法1在第 i 位置插入先定位到第 i-1 位置编辑 方法2在第 i 位置插入定位到第 i 位置
5、双链表删除结点 方法1删除第 i 位置结点先定位到第 i-1 位置 方法2删除第 i 位置结点定位到第 i 位置编辑
三、循环链表
1、循环单链表
2、循环双链表
3、其他操作方法与单链表和双链表操作一样
【栈】
一、顺序栈
1、存储结构
2、顺序栈类型的定义
3、顺序栈的 四 要素
4、顺序栈的运算节选
二、共享栈
1、存储结构
2、共享栈类型的定义
3、共享栈的 四 要素
三、链栈
1、存储结构带头结点的链栈
2、链栈结点类型的定义
3、链栈的 四 要素
4、链栈的运算节选 1进栈 Push(s, e) 2出栈 Pop(s, e) 3取栈顶元素 GetTop(s, e) 【队列】
一、顺序队
1、存储结构
2、顺序队类型的定义
3、顺序队的 四 要素
4、顺序队的运算节选
二、链队
1、存储结构
2、链队结点类型的定义
3、链队的 四 要素
4、链队的运算节选 1进队 enQueue(q , e) 2出队 deQueue(q , e)
三、变形链队
1、变化要点
2、存储结构
3、变形链队的 四 要素
四、双端队列
1、不受限的双端队列两端都可以进行进队和出队操作的队列
2、输出受限的双端队列一端允许进队和出队另一端只允许进队
3、输入受限的双端队列一端允许进队和出队另一端只允许出队
五、环形队列循环队列
1、环形队列循环队列 四 要素
六、变形环形队列
1、变化要点
2、变形环形队列类型的定义
3、变形环形队列的 四 要素 【链表】
一、单链表
1、存储结构带头结点的单链表 2、单链表结点类型的定义
typedef struct LNode // 定义单链表节点类型
{ElemType data; // 节点的数据部分类型为 ElemType通常是自定义的数据类型struct LNode *next; // 指向后继结点
}LinkNode; // 将结构体命名为 LinkNode如图 3、创建单链表 1头插法 代码理解先接s后面再接s前面 2尾插法 代码理解先接s前面再收s后面 4、单链表插入结点 代码理解先cv后面(先接s后面)再接s前面 5、单链表删除结点 代码理解直指后一位跳过中间 6、单链表的遍历模型 1模型1指向头结点 循环初始条件p 指向链表的头节点 L 。意味着循环将从头节点开始 循环结束条件循环在当前节点的下一个节点不为空时继续执行。意味着循环会只遍历到倒数第二个节点并且不会打印最后一个节点的数据 2模型2指向首结点 循环初始条件p 指向链表的第一个有效节点即 L -next 意味着循环将从第一个有效节点开始跳过了头节点。 循环结束条件循环在 p 不为空时继续执行。意味着循环会遍历整个链表包括最后一个节点 二、双链表
1、存储结构带头结点的双链表 2、双链表结点类型的定义
typedef struct DNode //双链表结点类型
{ElemType data;struct DNode *prior; //指向前驱结点struct DNode *next; //指向后继结点
}DlinkNode;3、创建双链表 1头插法 代码理解先接s后面判断是否后能回扣s再接s前面前回扣s 2尾插法 代码理解先接s前面后s回扣前面最后r即旧的s新的r指空 4、双链表插入结点 方法1在第 i 位置插入先定位到第 i-1 位置 代码理解先s接后回扣先接后再接前 方法2在第 i 位置插入定位到第 i 位置 5、双链表删除结点 方法1删除第 i 位置结点先定位到第 i-1 位置 代码理解跳过结点往下直指下一位下一位回扣上一位 方法2删除第 i 位置结点定位到第 i 位置 三、循环链表
1、循环单链表 2、循环双链表 3、其他操作方法与单链表和双链表操作一样 【栈】
一、顺序栈
1、存储结构 2、顺序栈类型的定义
typedef struct
{ElemType data[MaxSize]; //大小为 MaxSize,用于存储栈中的元素int top; //栈顶指针
}SqStack; 3、顺序栈的 四 要素 代码理解由于栈从0开始记所以栈空为-1栈满为最大MaxSize减一 进栈先加后进退栈先取后减 4、顺序栈的运算节选 要记得判断是否栈满与栈空 二、共享栈
1、存储结构 两头往中间增空间共享 2、共享栈类型的定义
typedef struct
{ElemType data[MaxSize]; //存放共享栈中元素int top1,top2; //两个栈的栈顶指针
}DStack; 3、共享栈的 四 要素 代码理解 栈空为两指针至两栈外-1MaxSize 栈满为两指针相邻 进栈top1进则先加再进top1为左top2进则先减再进top2为右都为向中靠拢 出栈top1出则先取再减top1为左top2出则先取再加top2为右都为向两边取 三、链栈
1、存储结构带头结点的链栈 2、链栈结点类型的定义
typedef struct linknode
{ElemType data; //数据域struct linknode *next; //指针域
}LinkStNode; 3、链栈的 四 要素 链栈栈满取决于电脑的内存设置所以不考虑 栈空即为头结点s下一位为空 4、链栈的运算节选 1进栈 Push(s, e) 要点链表的头插法插入结点 代码理解头插-先接后再接前 2出栈 Pop(s, e) 要点删除链表的首结点 代码理解跳过删除结点连上释放节点 3取栈顶元素 GetTop(s, e) 代码理解取栈顶赋值于e 【队列】
一、顺序队
1、存储结构 2、顺序队类型的定义
typedef struct
{ElemtType data[MaxSize];int front,rear; //队首和队尾指针
}SqQueue;
3、顺序队的 四 要素 rear指向队尾元素front指向队头元素的前一个位置。 代码理解队空为重合队满尾最高进队尾加后入出队前加后出
4、顺序队的运算节选
1)进队列 enQueue(qe):在队列不满的条件下将队尾指针 rear 增 1,然后将元素添加到该位置。
2)出队列 deQueue(qe):在队列不为空的条件下将队首指针 front 循环增 1并将该位置的元素值赋给 e。 二、链队
1、存储结构 一个链队的组成包含两种类型的结点: 1存储队列数据元素的链表结点 2存储队头和队尾指针的链队头结点
2、链队结点类型的定义 链队的数据节点类型DataNode
typedef qnode
{ElemType data; //数据元素struct qnode *next;
}DataNode; 链队的头结点类型LinkQuNode
typedef struct
{DataNode *front; //指向单链表队头结点DataNode *rear; //指向单链表队尾结点
}LinkQuNode;
3、链队的 四 要素 代码理解队空为前后指向空链队队满取决于内存大小不考虑进队尾插法出队从头删
4、链队的运算节选 1进队 enQueue(q , e) 代码理解先判队是否为空是则既头又尾否则尾插进入接前再接尾 2出队 deQueue(q , e) 代码理解删前先判断为空则回错return falset指首结点为独则设空前后都指空为多则好删跳格接前再存值最后再释放 三、变形链队
1、变化要点 使用循环双链表保留队尾指针rear。队头指针可通过rear-next得出
2、存储结构 尾指针rear会回指到队头
3、变形链队的 四 要素 代码理解队满看内存不考虑队空则尾指为空进队则尾插法出队则删头 四、双端队列
1、不受限的双端队列两端都可以进行进队和出队操作的队列 两端都可进出
2、输出受限的双端队列一端允许进队和出队另一端只允许进队 出口唯一两端可进后进为两边先进在中间
3、输入受限的双端队列一端允许进队和出队另一端只允许出队 进口唯一两端可进出队结果看两边 五、环形队列循环队列
1、环形队列循环队列 四 要素 代码理解队空为重叠队满则相邻尾指针的下一个位置等于头指针的位置牺牲一个元素进队从尾进出队从头出 涉及环形更新指针解析 六、变形环形队列
1、变化要点 取消尾指针利用队列中元素个数代替队尾指针 2、变形环形队列类型的定义
typedef struct
{ElemType data[MaxSize];int front; //队头指针int count; //队列中元素个数
}QuType; 3、变形环形队列的 四 要素 代码解析可参照环形队列多了一个count来作为计数记空与满方便很多