思路: 头尾指针,向中间遍历,依据条件交换元素。 1 #include 2 using namespace std; 3 4 void reOrder(int *pData, unsigned int len, bool (*func)(int)) 5 { 6 if(pData == ...
分类:
编程语言 时间:
2015-06-20 18:22:46
阅读次数:
163
实现双向链表的反转。参考下面的例图:
(a) 原始双向链表
(b) 已经反转的双向链表
下面是一个用于反转双向链表的简单方法。所需要做的事情就是交换每个节点的前向指针和后向指针,然后调整链表的头指针和尾指针。...
分类:
其他好文 时间:
2015-06-14 01:53:25
阅读次数:
312
本程序采用JAVA语言实现了线性表的链式实现。首先定义了线性表的接口ListInterface,然后LList类实现了ListInterface完成了链表的实现。本实现中,链表是不带表头结点的,且有一个指针始终指向链表中的第一个元素,并没有定义尾指针。因此,每次向链表中插入新结点时需要遍历链表一次。...
分类:
编程语言 时间:
2015-06-03 17:35:20
阅读次数:
158
1,本程序实现了线性表的链式存储结构。实现的链表带有两个指针,一个始终指向链表中的第一个结点,另一个指针始终指向链表中的最后一个结点。之所以设置尾指针,是因为,在插入元素到链表中的末尾时,可以通过尾指针直接找到链表的最后一个元素,从而不需要遍历链表就可以完成插入操作。2,具体实现链表的类名为LLis...
分类:
编程语言 时间:
2015-06-03 17:19:10
阅读次数:
102
百度之星的题。其实最简单的方法是二分答案,我竟然没想到,直接去想O(n)的去了,最后导致滚粗。。。题意就是给一个数列,要求把它处理成递增序列。首先我想到了O(n^2)的算法,然后再优化成O(n)过的。n^2的做法是,弄一个尾指针e,从后往前扫,一旦发现a[e-1]>=a[e],说明a[e]之后的所有...
分类:
其他好文 时间:
2015-05-30 22:36:56
阅读次数:
202
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分思路:声明两个指针,一个指向该数组的头,另一个指向该数组的尾,将头指针指向的第一个偶数和尾指针指向的第一个奇数交换即可,直到头指针大于尾指针跳出循环。代码如下:void t...
分类:
编程语言 时间:
2015-05-22 16:26:40
阅读次数:
101
总结链队列
什么是链队?
队列的链式存储结构称为链队列。链队也有两个指针,队头指针和队尾指针,这样队头删除和队尾插入操作就会很方便,链式队列一般像单链表一样,有一个头结点。
图示:
具体实现:
#include
using namespace std;
template
struct Node {
T data;
struct Node *nex...
分类:
编程语言 时间:
2015-05-16 12:02:55
阅读次数:
171
紫书上将这道题的方法成为“滑动窗口” ,它还应该有另一个名字叫——取尺法, 用两个首尾“指针”通过不断更新它们来逐步得到最优解,适合于解决连续序列的问题。
#include
using namespace std;
const int maxn = 1000000+5;
int T,n,A[maxn];
int main(){
scanf("%d",&T);
while(T--)...
分类:
其他好文 时间:
2015-05-14 22:09:04
阅读次数:
344
关于链式队列链式队列又称为链队,是使用单链表实现的,需要一个头指针一个尾指针
结构图:
链队需要的元素组成/*链式队列的每一个节点*/
struct node{
int data;//存储数据
struct node *next;//指向下一个节点的指针
};/*链式队列*/
typedef struct{
struct node *head;//头指针
stru...
分类:
其他好文 时间:
2015-05-08 23:53:21
阅读次数:
200