本文使用链表实现线性表的在内存中的另一种不连续结构.附C示例代码...
分类:
其他好文 时间:
2014-07-28 00:22:29
阅读次数:
232
上一篇博文介绍了如何使用C语言实现单链表,这篇博文介绍下双向链表的实现。单链表中每个结点只有一个后驱,而双向链表中每个结点都有一个后驱和前驱(除了第一个结点只有一个后驱,最后一个结点只有一个前驱)。双向链表中每个结点具有一个数据域和两个指向前一个结点和后一个结点的指针域。代码的实现:
首先得创建一个结点的结构体:Double_Node
typedef struct Double_Node
{
...
分类:
其他好文 时间:
2014-07-26 17:18:22
阅读次数:
317
原理:
1.若待删结点在单链表中间,则获取结点下一个结点的值,并复制给待删结点,然后删除待删结点的下一个结点。
2.若待删结点在单链表尾部,则顺序遍历单链表,删除。
3.若链表只有一个结点,正是待删结点,则删除之,并修改相关指针。
核心代码:
//在O(1)时间删除结点。注:必须保证pDel为链表中的结点
void DeleteNode(List *lis...
分类:
其他好文 时间:
2014-07-26 02:56:47
阅读次数:
343
/** * 单链表节点类 * @param */class Node{ protected T value; protected Node next;}/** * 单链表类 * @param */public class ChainList{ private Node fir...
分类:
其他好文 时间:
2014-07-25 14:16:21
阅读次数:
253
#include
#include
typedef int ElemType;
//定义结点类型
typedef struct Node
{
ElemType data;
struct Node *next;
}LNode,*LinkList;
//单链表的建立1,头插法建立单链表,逆序生成
LinkList LinkListCreateH()
{
LinkList L,p;
...
分类:
其他好文 时间:
2014-07-24 23:33:03
阅读次数:
237
线性表是数据结构中比较重要的一种结构。线性表可以用连续存储空间来表示,也可以用链表的形式表示。链式存储结构不要求在逻辑上相邻的元素在物理位置上也相邻,因此他在插入元素和删除元素上具有着得天独厚的优势,但是却失去了顺序存储中可随机存储的优点。
线性链表中每个元素被存放在一个叫做结点的地方,结点包含一个数据域和一个指针域,数据域存放元素,指针域存放着指向下一个结点的指针。若链表的结点中只包含一个指针...
分类:
其他好文 时间:
2014-07-24 23:08:24
阅读次数:
227
1.为了反转这个单链表,我们先让头结点的next域指向结点2,再让结点1的next域指向结点3,最后将结点2的next域指向结点1,就完成了第一次交换,顺序就变成了Header-结点2-结点1-结点3-结点4-NULL,然后进行相同的交换将结点3移动到结点2的前面,然后再将结点4移动到结点3的前面就...
分类:
编程语言 时间:
2014-07-24 21:37:32
阅读次数:
221
第十二章 使用结构和指针
这章就是链表。先单链表,后双向链表。
总结:
单链表是一种使用指针来存储值的数据结构。链表中的每个节点包含一个字段,用于指向链表的下一个节点。
有一个独立的根指针指向链表的第1个节点。单链表只能从一个方向遍历。
如何insert单链表:1、新节点的link字段必须设置为指向它的后面节点。2、前一个节点的link字段必须指向这个新节点。
为了...
分类:
其他好文 时间:
2014-07-23 22:39:57
阅读次数:
395
线性表的链式存储结构——链表,包括单链表、双链表、循环链表等。单链表的结点由数据元素和指向下一个结点的指针构成,是最简单的一种链表结构。
对单链表的操作很多,如查找、插入、删除、逆置、打印等,现对这些操作的实现做一个小结,代码用C语言实现。
#include
#include
typedef struct LNode
{
char data;
struct LNode *...
分类:
其他好文 时间:
2014-07-23 21:01:37
阅读次数:
286