
数据结构
晨光微雨
坚持就是胜利✌
展开
-
定长顺序表
头文件#pragma once#define SIZE 10typedef struct SeqList{ int elem[SIZE];//保存数据 int length;//有效数据个数}SeqList,*PSeqList ;//typedef SeqList* PSeqList;//PSeqList == SeqList*void InitSeqList(PSe...原创 2019-08-02 16:31:59 · 114 阅读 · 0 评论 -
队列(单链表)
头文件#pragma once//利用带头节点的单链表实现队列,队头为第一个数据节点typedef struct Node{ int data; struct Node *next;}Node;//数据节点typedef struct HNode{ struct Node *front;//队头指针 struct Node *rear...原创 2019-08-09 21:59:34 · 497 阅读 · 0 评论 -
单链表(不带头结点)
不带头结点的节点因为插入删除的时候会改变或者删除第一个节点,所以要引入二级指针进行一系列的操作头文件#pragma once//不带头结点的单链表typedef struct Node{ int data;//数据 Node * next;//存放下一个元素的地址}Node;//初始化void InitList(Node **ps);//头插bool Insert_H...原创 2019-08-18 17:53:27 · 700 阅读 · 0 评论 -
链栈
头文件//带头节点链栈,栈顶在第一个数据节点,入栈和出栈都是O(1)#include <stdio.h> #pragma once typedef struct LNode{ int data; //struct LNode *top;//不需要栈顶指针,总是第一个数据节点 struct LNode *next;}LNode,*PLSt...原创 2019-08-08 22:51:15 · 140 阅读 · 0 评论 -
循环队列(线性)
队列遵循先进先出的原则,一般从队尾插入,从队头删除。指向队头的指针称为front,队尾指针为rear。(目的是为了方便插入和删除元素)假设队列一共有五个元素,当没有元素的时候,front和rear指针都指向下标为0的位置。当有元素的时候,front指向队头,rear指向队尾元素的下一个位置。顺序表的队列,当删除和插入几个元素后, 就会出现假溢出的情况。假溢出:数组还有空闲的位置...原创 2019-08-09 21:30:57 · 709 阅读 · 0 评论 -
栈(不定长顺序表)
栈是一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。头文件#pragma once#define INITSIZE 10typedef struct DStack{...原创 2019-08-02 17:19:35 · 178 阅读 · 0 评论 -
双向链表(带头结点)
带头结点双向链表的内存分布情况头文件#pragma once//双向链表typedef struct DNode{ int data; DNode* next; DNode* prio;}DNode , *DList ;//初始化void InitList(DList plist);//头插法bool Insert_head(DList plist,int ...原创 2019-08-02 17:04:26 · 1894 阅读 · 0 评论 -
单链表(带头节点)
带头结点单链表的内存分布情况头文件#pragma once//带头节点的单链表//单链表尾节点的next为NULL//List为一条链表;Node* 一个节点的地址typedef struct Node{ int data;//数据 Node *next;//下一个节点的地址}Node ,*List ;//List == Node *//初始化void I...原创 2019-08-02 16:50:29 · 234 阅读 · 0 评论 -
不定长顺序表
头文件pragma once#define INIT_SIZE 10typedef struct DSeqList{ int *elem;//指向保存数据的内存 int length;//有效数据个数 int listsize;//总格子数}DSeqList;typedef DSeqList * PDSeqList;//初始化函数void Ini...原创 2019-08-02 16:36:02 · 132 阅读 · 0 评论 -
两栈共享空间
两个相同类型的栈,可能第一个栈已经满了,但是第二个栈还是空的,将两个相同类型的栈合并在一起,可以节省一部分空间。数组有两个端点,分别为两个栈的栈底,一个栈的栈底的位置为数组为0的地方,另一个栈的栈底为数组下标为SIZE-1的位置,SIZE为数组的长度。两个栈如果增加元素,就是两端点向中间延伸。只要两个栈顶指针不碰面,元素就可以一直进栈。头文件#pragma once...原创 2019-08-09 22:45:19 · 486 阅读 · 0 评论