图的邻接表表示法类似于树的孩子链表表示法。对于图G中的每个顶点vi,该方法把所有邻接于vi的顶点vj链成一个带头结点的单链表,这个单链表就称为顶点vi的邻接表(Adjacency List)。1. 邻接表的结点结构(1)表结点结构 ┌────┬───┐ │adjvex │next │ └────┴─...
分类:
其他好文 时间:
2015-08-20 16:44:01
阅读次数:
132
题目
1、判断一个单链表是否带环
2、求取一个带环单链表的环的长度
3、求取一个带环单链表的环的入口
4、判断两个不带环单链表是否相交
5、求取两个不带环单链表的一个公共节点
这仅仅一个单链表是否带环可以拓展出这么多的问题,我们来一个一个解决
1、判断一个单链表是否带环。
思路
记得以前做过这个,可以用快慢指针,两个指针同时指向头结点,快指针一次走两个,慢指针一次走一个,...
分类:
其他好文 时间:
2015-08-19 00:39:18
阅读次数:
202
给定一个有环链表,实现一个算法返回环路的开头结点。
#include
using namespace std;
typedef struct node
{
int data;
struct node* next;
}* LinkedListNode;
LinkedListNode FindBeginning(LinkedListNode head)
{
...
分类:
其他好文 时间:
2015-08-18 22:42:39
阅读次数:
133
Sort List
Sort a
linked list in O(n log n)
time using constant space complexity.
解题思路:
题意为以常量存储空间和O(nlogn)时间复杂度来排序链表。
可以用合并排序法,并用双指针法来找到中间节点。
产生一个头结点方便编码。
/**
* Definition for singly-link...
分类:
其他好文 时间:
2015-08-17 17:30:45
阅读次数:
161
题目
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点.ListNode* ReverseList(ListNode* pHead)
{
if (pHead == NULL)
return NULL;
ListNode* pPrev = NULL;
ListNode* pNode = pHead;
while (...
分类:
其他好文 时间:
2015-08-15 18:23:22
阅读次数:
101
数组就像容器,它的大小是不可调节的,链表的出现解决了这个问题,它将一个容器分解成若干个小容器,每一个小容器放入合适大小的元素,然后根据需要将它们链接起来,这些若干个小容器我们v把它叫做节点,通常它们都是按顺序排列的,排列在第一位的那个容器我们叫它头结点,最后一位的叫尾节点,每个容器除了放你要放置的东...
分类:
其他好文 时间:
2015-08-15 00:00:12
阅读次数:
328
题目:输入两个递增排序的链表,合并这两个链表,并使新链表中的结点仍然是按照递增排序的。
第一种思维:合并两个排序的链表,类似于合并两个排序数组,所不同的仅是一个用链表保存数据,一个用数组保存数据。
算法如下:(下面的算法前提是:头结点 不是 链表的第一个数据节点。)
/**方法一:合并两个排序链表,使用了新创建的链表来保存,没有改动两个原始链表*/
ListNode *merge_tow...
分类:
编程语言 时间:
2015-08-11 01:31:00
阅读次数:
176
堆栈
【链表实现堆栈】
优点:可以无限增添元素,只要内存足够,
缺点:内存中存储位置不连续
typedef int ElementType;
//只能向头部插入元素,因为如果在尾部插入,删除时,找不到上一个节点/
//因为链表是单向的
//所以 push pop 操作在头结点进行
class Stack{
public:
Stack(){
S=(Stack*)malloc(...
分类:
编程语言 时间:
2015-08-08 18:20:10
阅读次数:
164
双端链表跟传统的单链表不同的地方是,单链表就只有一个first指向头结点的,而双端链表不仅有first指向头结点,而且有一个last指向尾结点。 代码展示: public?class?Node?{
public?int?iNum;
public?dou...
分类:
其他好文 时间:
2015-08-05 15:12:38
阅读次数:
118
//_DataStructure_C_Impl:链栈
#include
#include
typedef char DataType;
typedef struct node{
DataType data;
struct node *next;
}LStackNode,*LinkStack;
//将链栈初始化为空。动态生成头结点,并将头结点的指针域置为空
void InitStack(Lin...
分类:
其他好文 时间:
2015-08-04 00:41:11
阅读次数:
98