什么是单链表 链表定义:用链式存储的线性表统称为链表 链表分类:单链表、双链表、循环链表、静态链表 1.初级写法 typedef关键字——数据类型重命名 typedef <数据类型> <别名> 如:typedef int zhengshu; —— int x = 1 (zhengshu x = 1) 2.高级写法 表示一个单链表时,只需声明一个头指针L,指向单链表的第一个结点 LNode * L与 LinkList L比较 1.不带结点的单链表 2.带结点的单链表 3.两种方式的比较 单链表的定义
一、顺序表和单链表的对比
顺序表
单链表
存储结构
顺序存储
链式存储
优点
随机存储
对连续空间无要求
缺点
要求大片连续空间
不可随机存取,耗费一定空间存放指针
内容
只存放数据元素
存放数据元素及指向下一个节点的指针
二、用代码定义一个单链表
struct LNode{ //定义单链表结点类型 ElemType data; //每个结点存放一个数据元素 struct LNode *next; //指针指向下一个节点 }; struct LNode *p = (struct LNode *)malloc(sizeof(struct LNode)); //增加一个新的结点,在内存中申请一个结点所需空间,并用指针p指向这个结点
struct LNode{ ElemType data; struct LNode *next; }; typedef struct LNode LNode; LNode *p = (LNode *)malloc(sizeof(LNode));
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;
LNode * L; //声明一个指向单链表第一个结点的指针 LinkList L; //声明一个指向单链表第一个结点的指针
LNode *L
LinkList L
侧重点
强调这是一个结点
强调这是一个单链表
三、两种实现方式
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; //初始化一个空的单链表 bool InitList(LinkList &L){ &:代表L的引用,若无&,就表示L的复制品,L并未改变 L = NULL; //空表,暂时没有任何结点,防止脏数据 return true; } void test(){ LinkList L; //声明一个指向单链表的指针,并没有创建结点 InitList(L); //初始化一个空表 }
typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; //初始化一个单链表(带头结点) bool InitList(LinkList &L){ L = (LNode *)malloc(sizeof(LNode)); //分配一个头结点,不存储数据 if(L = NULL) //内存不足,分配失败 return false; L->next = NULL; //头结点之后暂时还没有节点 return true; } void test(){ LinkList L; InitList(L); }
不带结点
带结点
下一个指向的结点存放数据
声明的结点不存放数据,下一个指向的结点存放数据
四、总结
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算