C语言数据结构
文章平均质量分 91
shlyyy
Keep Coding
展开
-
【数据结构】C语言实现二叉树(二叉树的链式结构实现)
BTNode;1.第一步需要上来就对空树情况进行处理。2.递归的方法进行问题转换:求树的问题,转换为求左树和右树的问题,进行递归处理。3.第二步空树情况处理完之后,需要给出递归结束条件。或满足当前节点判断的条件。4.第三步需要给出递归表达式。原创 2023-05-31 14:17:05 · 893 阅读 · 0 评论 -
【数据结构】树与二叉树
完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址。也就是说,如果一个二叉树的层数为K,且结点总数是。,根节点是1个,加上度为1结点的孩子,再加上度为2的结点的两个孩子。原创 2023-05-31 14:05:28 · 481 阅读 · 0 评论 -
【数据结构】C语言实现堆及其应用
int size;} Heap;1.函数AdjustUp和AdjustDown的改变控制者大小根堆的切换。2.大小根堆的切换可以决定堆排序的升序和降序。3.大小根堆的切换以及进堆时比较规则的切换可以决定topK大和topK小。原创 2023-05-19 17:45:30 · 1179 阅读 · 3 评论 -
【数据结构】C语言实现队列(链式队列)
结点定义:因为使用单链表实现队列,所以队列结点与单链表结点相同。} QNode;int size;} Queue;我们使用size变量记录队列中的元素个数,这样可以直接返回该值,但在插入和删除时要维护该size的值。assert(pq);链式队列的实现本质上是对单链表进行操作。入队和出队分别对应单链表的尾插和头删。因为是无头单向非循环的单链表,因此尾插时需要对空链表单独处理。又因为我们需要维护尾指针,因此头删时,删除最后一个元素时还需要对尾指针单独处理。这些在上面代码中都有所体现。原创 2023-05-17 13:50:58 · 1280 阅读 · 1 评论 -
【数据结构】C语言实现栈(顺序栈)
int top;} ST;初始时,top给的是0,意味着top指向栈顶数据的下一个位置。也就是将来数据要入栈的位置。初始时,top给的是-1,意味着top指向栈顶数据。顺序栈的实现本质上就是对特殊的顺序表的实现。入栈和出栈本质上就是顺序表的尾插和尾删。栈的top变量既可以充当栈顶索引使用,其值也可以当做栈的元素个数使用。原创 2023-05-17 13:39:36 · 672 阅读 · 0 评论 -
【数据结构】C语言实现双向链表(带头结点、循环)
/ 在pos之前插入 void LinkedListInsert(LinkedListNode * pos , ListDataType x);// 删除pos位置的值 void LinkedListErase(LinkedListNode * pos);带头结点、双向、循环链表的实现都非常的简单,需要注意判空条件与遍历终止的条件。在代码写法上,对于某个节点的前一个或后一个的问题,我们最好分别使用变量去记录,这样代码的逻辑更清晰,可读性更高。原创 2023-05-10 19:37:01 · 1119 阅读 · 2 评论 -
【数据结构】C语言实现单链表(带头结点)
SLLWNode;// 在pos之前插入 void SLLWInsert(SLLWNode * phead , SLLWNode * pos , SLLWDataType x);// 在pos之后插入 void SLLWInsertAfter(SLLWNode * pos , SLLWDataType x);// 删除pos位置的值 void SLLWErase(SLLWNode * phead , SLLWNode * pos);原创 2023-05-04 11:33:30 · 2327 阅读 · 2 评论 -
【数据结构】C语言实现单链表
SLLNode;// 打印 void SLLPrint(SLLNode * phead);// 头插、尾插 void SLLPushFront(SLLNode * * pphead , SLLDataType x);// 头删、尾删 void SLLPopFront(SLLNode * * pphead);// 查找 SLLNode * SLLFind(SLLNode * phead , SLLDataType x);原创 2023-04-30 18:19:41 · 3079 阅读 · 0 评论 -
【数据结构】C语言实现顺序表
/ 初始化、销毁 void SeqListInit(SeqList * psl);// 打印顺序表 void SeqListPrint(SeqList * psl);// 尾插、头插 void SeqListPushBack(SeqList * psl , SeqListDatatype x);// 尾删、头删 void SeqListPopBack(SeqList * psl);原创 2023-04-16 18:45:37 · 670 阅读 · 1 评论