单链表与双向链表
2017-12-08 18:41
211 查看
单链表
链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
以"结点的序列"表示线性表称作线性链表(单链表)
单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
关于[b]单链表的代码[/b]
链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。
以"结点的序列"表示线性表称作线性链表(单链表)
单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素。
双向链表
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
关于[b]单链表的代码[/b]
#include<stdio.h> #include<stdlib.h> #define len sizeof(struct number) struct number{ int value; struct number *left; struct number *right; }; struct number * create(int n){ struct number *head; struct number *p1,*p2; p1=p2=(struct number*)malloc(len);//关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针 if(p1->left==NULL){ head=p1; scanf("%d%d",&p1->value,&p2->value); p1->right=p2; } else{ p1=(struct number*)malloc(len); scanf("%d",p2->value); p1->right=p2; p2->right=NULL; } return(head); } int main(){ struct number *pt; printf("单链表:"); pt=create(); system("pause"); }
相关文章推荐
- 单链表、双向链表的比较
- java实现双向循环链表和单链表
- 单链表,双向链表的插入,查询,创建,删除,输出
- 二级指针实现单链表的插入、删除及 linux内核源码双向链表之奇技
- 单链表,双向链表节点的删除
- 单链表及基本运算 && 双向链表及基本运算 && 静态链表
- 二级指针实现单链表的插入、删除及 linux内核源码双向链表之奇技
- Java 单链表的反转 以及 双向链表的实现
- 单链表与双向链表的Java实现
- 单链表和双向循环链表的创建、初始化、以插入(二)
- 数据结构之路-双向链表
- 数据结构-01-链表数据结构之单链表
- 二叉排序树转换成双向链表
- 四道有趣的单链表面试题(单链表反序、找出链表的中间元素、链表排序、判断一个单链表是否有环
- 数据结构 在单链表和双链表中删除倒数第K个节点
- 剑指offer 二叉搜索树与双向链表
- 数据结构与算法(C语言版)__双向链表
- Python单向链表和双向链表原理与用法实例详解
- 【数据结构】单链表—寻找两个相交链表中第一个公共结点 — 蛮力法 / 栈 / 指针先走
- 双向链表