链表排序讲解:head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了。head存储的是第一个节点的地址,head->next存储的是第二个节点的地址; 任意一个节点p的地址,只能通过它前一个节点的next来求得。单向链表的选择排序图示: ---->[1]--...
分类:
编程语言 时间:
2015-09-03 14:02:22
阅读次数:
186
博客介绍了C语言,以及C++的单向链表。那么我们今天介绍的双向链表,顾名思义,就是数据本身具备了左边和右边的双向指针。双向链表相比较单向链表,主要有下面几个特点:
(1)在数据结构中具有双向指针
(2)插入数据的时候需要考虑前后的方向的操作
(3)同样,删除数据的是有也需要考虑前后方向的操作
那么,一个非循环的双向链表操作应该是怎么样的呢?我...
分类:
编程语言 时间:
2015-08-31 17:26:28
阅读次数:
259
归并排序改变链接
快速排序改变链接
快速排序改变节点值
所有源码和测试函数
对单向链表的排序有2种形式,只改变节点的值 和 只改变链接// 节点
struct ListNode {
int val;
ListNode* next;
ListNode(int v, ListNode* n = NULL) {
val = v;
next = n;...
分类:
编程语言 时间:
2015-08-29 17:08:32
阅读次数:
317
一、题目:在O(1)时间删除链表结点题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 原文采用的是C/C++,这里采用C#,节点定义如下: public class Node { // 数据域 public T Item { ...
分类:
其他好文 时间:
2015-08-28 15:19:45
阅读次数:
196
ListNode* CreaList()
{
int nValue;
ListNode* Head = NULL;
ListNode* ListIndex = NULL;
while(cin >> nValue)
{
if (Head == NULL)
{
Head = new ListNode();
Head->nValue = nValue;
ListInd...
分类:
其他好文 时间:
2015-08-27 16:47:12
阅读次数:
120
循环单向链表 图(a)添加头节点 图(b)添加尾节点void addToTa...
分类:
其他好文 时间:
2015-08-26 23:49:23
阅读次数:
197
文本主要内容:链表结构单链表代码实现单链表的效率分析一、链表结构: 概念: 链式存储结构是基于指针实现的。我们把一个数据元素和一个指针称为结点。 数据域:存数数据元素信息的域。 指针域:存储直接后继位置的域。 链式存储结构是用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)...
分类:
编程语言 时间:
2015-08-26 21:56:42
阅读次数:
203
题目描述实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。给定带删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true思想:前后节点,值复制代码如下:import java.util.*;/*public class ListNode { int val;...
分类:
其他好文 时间:
2015-08-25 19:04:08
阅读次数:
110
实现一个算法删除链表中的某个结点,假定你只能访问这个这结点:输入:单向链表a->b->c->d->e中的结点c结果:不返回任何数据,但是该链表变为a->b->d->e分析:当结点为空或者是尾结点的时候,该算法实现不了。定义一个临时的next指针指向要删除结点的后续,n的data移动到next的dat...
分类:
其他好文 时间:
2015-08-19 07:03:37
阅读次数:
135
前段时间在看一本01年出的旧书《effective Tcp/Ip programming》,这个算法专题中断了几天,现在继续写下去。 Introduction 对于单向链表(singly linked list),每个节点有?个next指针指向后一个节点,还有一个成员变量用以储存数值;对于双向链表(...
分类:
编程语言 时间:
2015-08-17 23:23:21
阅读次数:
259