题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点,链表节点与函数的定义如下:struct ListNode{int m_nValue;ListNode* m_pValue;};void DeleteNode(ListNode** pListNode,ListNode *...
分类:
其他好文 时间:
2015-06-09 23:11:44
阅读次数:
143
Sort a linked list using insertion sort.题目大意:将一个单链表使用插入排序的方式排序。解题思路:先新建一个头指针,然后重新构建一下这个单链表,每次从头找到第一个比当前元素大的,插在这个元素前面。/** * Definition for singly-linke...
分类:
其他好文 时间:
2015-05-24 20:23:04
阅读次数:
122
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分思路:声明两个指针,一个指向该数组的头,另一个指向该数组的尾,将头指针指向的第一个偶数和尾指针指向的第一个奇数交换即可,直到头指针大于尾指针跳出循环。代码如下:void t...
分类:
编程语言 时间:
2015-05-22 16:26:40
阅读次数:
101
链表的重点概念:
数据域和指针域
头指针和头结点
下面是单链表的实现源码:
//
// main.c
// DataStructure
//
// Created by SuooL on 15/5/22.
// Copyright (c) 2015年 SuooL. All rights reserved.
//
#include "stdio.h"
#include "strin...
分类:
其他好文 时间:
2015-05-22 09:40:24
阅读次数:
212
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:要删除一个结点,常规的办法就是让他的前面一个结点的next值指向他的下一个结点,但是要获得它的前一个结点时间复杂度为O(n);可以转换一下思维,先将它的下一个结点的值赋给要删除的结点,然后删除它的下一个结点就行了;...
分类:
其他好文 时间:
2015-05-20 22:14:52
阅读次数:
122
题目要求:在O(n)的时间内反转链表,并返回反转后链表的头指针。
分析:求解链表问题首先一定要考虑非空问题,而且要注意终止的位置。
如图所示,反转的时候定义三个节点,pCur代表当前节点、pNext代表指向的下一个节点、pPre代表前一个节点。有了这三个节点就可以从前往后遍历,而且保证链表不会断...
分类:
编程语言 时间:
2015-05-19 16:43:48
阅读次数:
166
链表是一种动态数组,各个节点在内存中零散分布,通过指向下一个节点的指针连结在一起。单链表应该是最简单的一种链表了,单链表的每个节点中都有一个指向下一个节点的指针,最后一个节点指向NULL,有一个头指针指向第一个节点。下面的函数实现了单链表的创建,销毁和删除节点的功能。在添加节点的时候,有种实现方法是...
分类:
编程语言 时间:
2015-05-17 23:33:59
阅读次数:
167
总结链队列
什么是链队?
队列的链式存储结构称为链队列。链队也有两个指针,队头指针和队尾指针,这样队头删除和队尾插入操作就会很方便,链式队列一般像单链表一样,有一个头结点。
图示:
具体实现:
#include
using namespace std;
template
struct Node {
T data;
struct Node *nex...
分类:
编程语言 时间:
2015-05-16 12:02:55
阅读次数:
171
今天总结链栈。
什么是链栈?
链栈就是栈的链式存储结构,就跟单链表差不多。只不过头指针变成了栈顶指针,这个指针总是指向栈顶元素。栈底结点的指针域指向NULL,当top==NULL时,则栈为空.具体实现时,对比着单链表,然后结合图示,很容易就写出来了。
图示:
实现:
#include
using namespace std;
template
struct Node {
...
分类:
编程语言 时间:
2015-05-13 10:38:33
阅读次数:
186