题目:输入一个单向链表,输出该链表中倒数第k个结点。最后一个结点为倒数第一个结点。思路:1.首先遍历链表的长度获得链表的length,则它的倒数第k个结点就是正数length-k+1个结点,但这需要遍历链表两次2.使用两个指针可以实现遍历一次,first指针指向头结点,second指针指向first...
分类:
其他好文 时间:
2015-05-25 16:32:02
阅读次数:
99
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:要删除一个结点,常规的办法就是让他的前面一个结点的next值指向他的下一个结点,但是要获得它的前一个结点时间复杂度为O(n);可以转换一下思维,先将它的下一个结点的值赋给要删除的结点,然后删除它的下一个结点就行了;...
分类:
其他好文 时间:
2015-05-20 22:14:52
阅读次数:
122
过去的自己,你好。 今天我来教你单向链表,不知道你何时会看到这篇文章,也不知道你此刻对C语言的掌握,我会尽可能讲解细一点。 讲链表之前我先讲一下数组。相信你不管怎样肯定用过数组对吧,数组就是一种数据的组织形式,特点是所有的数据在逻辑上是顺序摆放的,通过数组名和数组下标就可以找到某个元素,而且在内存....
分类:
编程语言 时间:
2015-05-20 18:20:11
阅读次数:
193
【基本概念】单链表即单向链表,数据结构为一个接一个的结点组成,每个结点有两个成员,一个数据域一个指向下一个结点的指针,如下:struct Node
{
int data;
struct Node *next;
};单链表基本操作包括链表初始化、插入、删除,其中初始化操作是指让单链表存在一个头结点,其数据域随机,头结点指向下一个结点,每次访问都要从头结点开始访问,插入结点方式有两种,尾...
分类:
其他好文 时间:
2015-05-19 19:09:05
阅读次数:
194
题目:
输入一个单向链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头开始它们的值依次是1,2,3,4,5,6。这个链表的倒数第3个结点是值为4的结点。
链表结点定义如下:
struct ListNode
{
int m_nKey;
ListNode* m_pNext;
};
...
分类:
其他好文 时间:
2015-05-13 21:53:32
阅读次数:
197
题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(l)时间删除该结点。链表结点与函数的定义如下:
struct ListNode{
int m_nValue;
ListNode *m_pNext;
};
void DeleteNode(ListNode **pListHead, ListNode *pToBeDeleted);把下一个结点的内容复制到需要删除的结点上覆盖原有的内容,...
分类:
其他好文 时间:
2015-05-12 21:04:42
阅读次数:
125
关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度:public class Node{ public Node(int value, Node next) { this.Value...
分类:
其他好文 时间:
2015-05-12 20:47:11
阅读次数:
130
刚刚出炉的复习代码,太久没写,复习下,带头结点的单向链表。
很多人和书都用的指向指针的指针,反正我是不喜欢,所以就没用。#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"time.h"
//链表typedef struct LNode{
int value ;
LNode *next;
}LNode,*...
分类:
其他好文 时间:
2015-05-12 17:17:18
阅读次数:
128
本文利用经典的魔术师发牌问题与拉丁法阵分别解说了循环链表与单向链表的使用,作为算法中的经典,对于链表的学习和理解都有着非常大的帮助,最好还是一看。魔术师发牌问题问题描写叙述:魔术师利用一副牌中的13张黑牌,预先将他们排好后叠放在一起,牌面朝下。对观众说:“我不看牌,仅仅数数就能够猜到每张牌是什么,我...
分类:
其他好文 时间:
2015-05-10 20:25:19
阅读次数:
214
1.如何通过调整链而不是数据来交换两个相邻的元素? // 单向链表
Node *p,*afterp;
p=beforep->next;
afterp=p->next; p->next=afterp->next;
beforep->next=afterp;
afterp->next=p; // 双向链表
Node *beforep,*a...
分类:
其他好文 时间:
2015-05-09 17:39:28
阅读次数:
229