随笔分类 - 数据结构与算法
摘要:原理很简单,直接上代码吧(Leetcode 21)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val...
阅读全文
摘要:思路:如果开始有两个指针指向头结点,一个走的快,一个走的慢,如果有环的话,最终经过若干步,快的指针总会超过慢的指针一圈从而相遇。 如何计算环的长度呢?可以第一次相遇时开始计数,第二次相遇时停止计数。 如何判断环的入口点?碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始...
阅读全文
摘要:假设单链表数据结构定义如下: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };单链表有一个头指针指向第一个结点,最后一个结点指向NULL一、最容...
阅读全文
摘要:原文链接:http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就...
阅读全文
摘要:主要是单链表的一些常见操作:像创建链表,删除结点,插入结点,链表逆序,按大小排序等 1 #include 2 using namespace std; 3 4 struct Node 5 { 6 int val; 7 Node *next; 8 Node(...
阅读全文
摘要:双向链表结构:定义一个如下结构体struct Node{ Object data; Node *next; Node *prev;};下面为list的具体实现:#include using namespace std;template class List{private: ...
阅读全文
摘要:实现一个简单的vector Vector基于数组实现,可以复制并且其占用的内存可以自动回收(通过析构函数),可以调整Vector的大小,以及容量(容量的改变是通过为基本数组分配一个新的内存块,然后复制旧的内存块到新块中,再释放旧块的内存)。在进行插入和删除操作时,需要位置标记,这里使用通用的迭代器...
阅读全文
摘要:一、问题描述如图所示,一个旅行商从A点出发,需要不重复地走遍5个城市ABCDE,最后回到A。每个城市之间的花费(即权值)如图所示,现在要求找出一条总花费最小的路径,即权值和为最小的路径。二、 算法说明1. 算法一: 登山法(贪心法) 即在每一个城市出发前比较接下来所能走的城市花费(权值),找出权...
阅读全文
摘要:一、普通冒泡排序 冒泡排序想必大家都不陌生,原理也就不介绍了,直接看代码吧 (1)第一种 1 static void Sort(int[] unsorted) 2 { 3 for (int i = 0; i unsorted[j+1]) 8 ...
阅读全文
摘要:1、Gauss消去法及列主元素消去法算法介绍2、c#源码 1 /******************************** 2 高斯列主元素消去法解多元一次方程组 3 * 4 * 例如 方程组 5 * x+y+z=7 6 * 2x+y-z=6 7 * x-y-2z=4...
阅读全文