码迷,mamicode.com
首页 >  
搜索关键字:单链表    ( 2784个结果
两种方法求单链表逆序
1 递归,很简单 代码: #include using namespace std; typedef struct node{ int data; struct node * pNext; }Node ,*pNode; void createNode(pNode & pHead){ int temp; scanf("%d",&temp); pNode p,q; boo...
分类:其他好文   时间:2014-08-08 21:28:56    阅读次数:314
队列(链式)
队列,是一种先进先出的线性表,它只允许在队头删除,在队尾插入,链式队列和单链表操作类似,但是有队首指针和队尾指针,下面是链式队列的表示和实现:#include using namespace std;//队列的链式表现与实现struct QNode{ int data; QNode *n...
分类:其他好文   时间:2014-08-08 17:37:06    阅读次数:257
[笔试题] 两个有趣的问题
两个有趣的笔试题,看看你是不是都能轻松搞定~ 有n瓶粉末,一瓶有毒。有毒的粉末融在水里一小时后水会变蓝。你有一些试管,问最少需要多少时间和多少试管就能确定毒粉末呢?不考虑粉末导入试管的时间。 给定一个无环的单链表,如何快速定位位于链表中间的那个节点?返回值为指向中间节点的指针。...
分类:其他好文   时间:2014-08-08 04:19:55    阅读次数:230
Java 实现单链表反序
//单链表反序 public class SingleLinkedListReverse { public static void main(String[] args) { Node head = new Node(0); Node temp = null; Node cur = null; for (int i = 1; i <= 10; i++) { tem...
分类:编程语言   时间:2014-08-07 13:10:20    阅读次数:256
算法题:复制复杂链表之空间换时间法
题目:复制一个复杂链表,所谓复杂链表指的是每个节点含有两个指针,一个指向单链表的下一个结点,一个指向单链表中的任意某个结点,或者该指针为空。 为了方便起见,我们将待复制的链表称为原型链表,将复制后的新链表称为复制链表,将指向下一个结点的指针定义为next指针,指向其他位置的指针定义为any指针。《剑指offer》上给出了三种解决方法:(1)常规法;(2)空间换时间法;(3)紧随复制法。书上并给出了第三种方法的实现代码。这里我根据书上的提示,给出第二种方法的代码。...
分类:其他好文   时间:2014-08-05 22:45:00    阅读次数:346
用两种递归思路与循环实现单链表的反转
typedef struct ListNode{ int data; struct ListNode *next; }ListNode; //递归一 ListNode *ReverseList (ListNode *pHead, ListNode *nHead = NULL) { //每次取下第一个节点头插法创建新链表 //nHead为反转后链表的头节点 if(pHead == NUL...
分类:其他好文   时间:2014-08-05 19:36:50    阅读次数:241
算法题:反转单链表
题目:存在一个单链表,头指针为head,实现单链表的反转Node *Reverse(Node *head)。 该算法的求解办法有很多,如: 方法1:先顺序变量单链表,将结点保存到栈中,在从栈中弹出结点,重新建立一个新的单链表; 方法2:用《剑指offer》里面给出的算法,用三个指针来实现; 方法3:采用递归实现,是方法2的递归实现形式。 本文主要给出方法2和方法3,在给出具体的代码之前,先要注意几个问题: ...
分类:其他好文   时间:2014-08-04 18:01:57    阅读次数:200
创建单线性链表的不同表示方法和操作
创建单线性链表,常见的有头插法、尾插法创建线性链表,常见的操作有:创建链表、查找、删除、增加元素、求逆链等操作。 这里首先才有头插法创建链表: //头指针唯一确定一个单链表 #define MaxSize 15 typedef int elem_type ; typedef struct linklist { elem_type data; str...
分类:其他好文   时间:2014-08-04 17:51:41    阅读次数:219
算法题:合并两个有序的链表
题目:已知有两个有序的单链表,其头指针分别为head1和head2,实现将这两个链表合并的函数: Node* ListMerge(Node *head1,Node *head2) 这个算法很像我们排序算法中的归并排序,只能说“很像”,因为思想是一样的,但是这个与归并排序还是有区别的,区别如下: 1.归并排序是针对有序数组,而这里是有序链表; 2.归并排序排序的时间复杂度为o(nlogn),而这里的时间复杂度最坏情况下为O(m+n),最好的情况下为...
分类:其他好文   时间:2014-08-04 17:43:47    阅读次数:296
算法题:求链表倒数第K个结点
题目:给出一个单链表,返回倒数第K个结点,最后一个结点为倒数第1个。 《剑指offer》上面给的解法是设置两个指针,这里记为p1、p2,先让p2走(k-1)步,然后p1、p2同时走,当p2走到最后一个结点时,p1所指向的结点就是倒数第k个结点。 我觉得按照这样的逻辑写代码反而更容易出错,因为我们需要把我两件重要的问题:(1).p2先走(k-1)步;(2)循环结束的条件是p2到达最后一个结点,即p2->next==NULL。显然这样不太容易控制,我的想法是:先让p2先走k步,然后p...
分类:其他好文   时间:2014-08-04 14:22:17    阅读次数:232
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!