
C/C++
用C/C++实现408数据结构算法题
迷人的派大星
加油
展开
-
最低加油次数问题(c++实现)
问题: 汽车从起点出发驶向目的地,该目的地位于出发位置东面 target 英里处。沿途有加油站,每个 station[i] 代表一个加油站,它位于出发位置东面 station[i][0] 英里处,并且有 station[i][1] 升汽油。假设汽车油箱的容量是无限的,其中最初有 startFuel 升燃料。它每行驶 1 英里就会用掉 1 升汽油。当汽车到达加油站时,它可能停下来加油,将所有汽油从加油站转移到汽车中。为了到达目的地,汽车所必要的最低加油次数是多少?如果无法到达目的地,则返回 -1 。原创 2021-03-05 17:43:04 · 626 阅读 · 0 评论 -
二叉树的前中后序遍历的迭代实现
二叉树的前中后序遍历是学习树形结构时必须要掌握的算法,同时也是树形结构中最基础的算法,通过前中后序遍历的变形能解决很多二叉树相关的算法问题。前中序后算法的递归版本代码比较简单也很简洁明了,这里不再给出。下面分别给出前中后序的迭代版本。先序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *原创 2020-08-10 18:22:47 · 429 阅读 · 0 评论 -
一文教会翻转单链表的三种经典方法
题目:翻转链表来源:Leetcode翻转链表是很经典的操作链表场景,可以很基础的操作,以下给出三种方式对链表进行翻转。头插法头插法是一种建立链表的基本操作,在这里,我们也可以将翻转链表这个问题转化为头插法建立新链表的问题。思路:首先我们定义一个头结点,然后我们对题目所给的单链表进行遍历,每遍历一个结点,我们就将这个结点摘下,以头插法建立单链表的思想,在头节点后进行 “头插” 操作。当单链表遍历完成时,由于头插法的特性,我们得到的新链表即为原来链表的翻转版。假如给定的单链表如下:头插法新建链原创 2020-06-26 21:56:08 · 603 阅读 · 0 评论 -
删除链表指定值的结点(递归与迭代实现)
题目:删除链表指定值的结点来源:Leetcode递归/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* hea原创 2020-06-26 18:15:46 · 429 阅读 · 1 评论 -
C++实现单链表
class MyLinkedList {public: struct LinkedNode { int val; LinkedNode *next; LinkedNode(int val):val(val), next(NULL){} }; /** Initialize your data structure here. */ int length=0; LinkedNode *dummyHead; MyLi原创 2020-06-25 17:26:59 · 273 阅读 · 0 评论 -
C++实现顺序表
#include <iostream>using namespace std;#define MAXSIZE 50// 定义结构体typedef struct { int *data; int length;}SqList;// 初始化顺序表void InitList(SqList &L){ L.data =(int *)malloc(sizeof(int) * MAXSIZE); L.length = 0;}// 插入操作boo原创 2020-06-25 17:11:11 · 341 阅读 · 0 评论