
数据结构与算法
学习ing
haerxiluo
这个作者很懒,什么都没留下…
展开
-
反转链表(头结点带值与不带值)
NC78 反转链表 描述:给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: n\leq1000n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。 不带头结点(头结点带值):代码:class Solution {public: L原创 2022-01-19 20:47:08 · 949 阅读 · 0 评论 -
二叉树的先中后层序遍历的实现
二叉树是树结构中最容易实现的数据结构,本节介绍二叉树的各种遍历实现形式,分为先序,中序,后序,以及层序遍历。层次遍历是基于树的层次特性确定的次序规则,而先/中/后/序遍历是基于树的递归特性确定的次序规则。 1.先中后序遍历实现 // 二叉树的链式存储及三种递归遍历方式#include <stdio.h>#include <stdlib.h>typedef struct BiTNode{ cha原创 2021-09-21 23:58:57 · 193 阅读 · 0 评论 -
双向链表的基本操作实现
双链表通过前驱指针与后驱指针解决了单链表无法逆向检索的问题。 1.注意事项两种边界情况:新插入结点在最后一个位置时,需特殊处理。被删除结点是最后一个结点时,需特殊处理。2.代码实现// 带头结点的双向链表#include <stdio.h>#include <stdlib.h>typedef struct DNode{ int data; //数据域 struct DNode *prior,*next; //前项指针,后项指针}DN原创 2021-09-01 23:53:28 · 132 阅读 · 0 评论 -
单链表操作实现(不带头结点)
不带头结点的单链写代码会复杂一些,具体表现在对第一个数据结点和后续数据结点的处理需用不同的代码逻辑,对空表和非空表的处理需用不同的代码逻辑。 代码实现:代码含增,删,查,头插法建表,尾插法建表,逆置等操作#include <stdio.h>#include <stdlib.h>// 不带头结点的单链表// 对第一个数据结点和后续数据结点的处理需用不同的代码逻辑,对空表和非空表的处理需用不同的代码逻辑typedef struct LNode{原创 2021-09-01 23:27:03 · 1689 阅读 · 0 评论 -
单链表的各种操作实现(带头结点)
最近复习数据结构,链表的各种操作都得重新敲一遍,带头结点链表更易于实现。代码含增,删,查,头插法建表,尾插法建表,逆置等操作#include <stdio.h>#include <stdlib.h>typedef struct LNode{ int data; //数据域 struct LNode *next; //指针域}LNode,*LinkList;bool InitList(LinkList &L){ L = (LNode *)原创 2021-08-13 17:04:53 · 350 阅读 · 0 评论