原理都很简单,关键是某些边界能否正确写对:
#include
#include
using namespace std;
class Node {
public:
int val;
Node* next;
Node(int val = 0):val(val),next(NULL){
}
};
Node* quicksort(Node* head, Node* tai...
分类:
其他好文 时间:
2014-05-15 20:27:36
阅读次数:
296
在这里实现了带头结点的链表,包含插入,删除,查询,清空链表一系列功能#includeusing
namespace std;class LinkList{ char *elem; LinkList *next; static int
length;public: LinkList(char *e) ...
分类:
其他好文 时间:
2014-05-15 18:05:31
阅读次数:
271
题意:给定两个代表数字的链表,每个节点里存放一个digit,数字是逆方向的,将这两个链表相加起来
思路:
1.i, j遍历l1,l2至最长,短的补零
2..设置一个进位变量c, 第i次遍历 l1,l2,c的和除以10进位,mod10留在这一位
3.出循环后还要检查是不是还有进位
复杂度:O(m+n), 空间O(m+n)...
分类:
其他好文 时间:
2014-05-15 13:38:03
阅读次数:
258
将一个已排序的链表或数组转化成一棵平衡二叉树...
分类:
其他好文 时间:
2014-05-15 13:16:43
阅读次数:
237
写一个string双向链表模块,具有提取和插入功能。通过建立一个程序语言种类的表来练习这个模块。为这个表提供一个sort()函数。并提供一个函数反转表中字符串的顺序。环境:vs2005
win32控制台程序#include #include #include #include // for std....
分类:
其他好文 时间:
2014-05-15 10:45:47
阅读次数:
342
有的时候,处于内存中的数据并不是连续的。那么这时候,我们就需要在数据结构中添加一个属性,这个属性会记录下面一个数据的地址。有了这个地址之后,所有的数据就像一条链子一样串起来了,那么这个地址属性就起到了穿线连结的作用。
链表有:单链表,双链表,单循环链表,双循环链表。
理解单链表,其他几种也就大同小异。
相比较普通的线性结构,链表结构的优势是什么呢?我们可以总结一下:
(1)...
分类:
编程语言 时间:
2014-05-15 05:48:01
阅读次数:
266
//***************************************************************
//结构体:简单的静态链表
#include
#include
#define NULL 0
#define SIZE 10
struct student
{
char num[SIZE];
float score;
struct student *next;
...
分类:
编程语言 时间:
2014-05-15 02:55:09
阅读次数:
359
题意:将已排序的链表中所有重复的元素移除
思路:
三个个指针,pre, cur, next
一个布尔变量is_appear,表示cur指针指向的值之前是否已经出现过
检查cur, next指向的节点的值是否相同,
相同的话,删除cur
不同的话,如果is_appear为true,删除cur,否则不删除
删除的话,只移动cur, next指针
不删除的话,要移动pre, cur, next三个指针
复杂度:时间O(n),空间O(1)...
分类:
其他好文 时间:
2014-05-15 02:54:32
阅读次数:
262
题意:移除链表的倒数第n个元素
思路:
两个指针p, q,
p先走n步,然后p,q一起走,当p走到尾的时候,q->next就是要删除的节点
复杂度: 时间O(n),空间O(1)...
分类:
其他好文 时间:
2014-05-15 02:53:13
阅读次数:
241
题意:交换给定链表中的相邻节点,但不可以改变链表里的值
如1->2->3->4交换后为2->1->4->3
思路:
按题意中的扫描去改变每两个相邻节点的next指针的指向即可。
小技巧:
因为处理每两个相邻节点的时候,需要一个指针记录它们前一个节点,而头节点前面没有节点,
所以可设置一个dummy节点指向头指针,这样开头的两个节点的处理方式跟其它的相邻节点的处理方式就一样了
复杂度:时间O(n),空间O(1)...
分类:
其他好文 时间:
2014-05-15 00:16:00
阅读次数:
359