当前位置: 首页 > wzjs >正文

设计logo网站免费奇米百度号码认证平台首页

设计logo网站免费奇米,百度号码认证平台首页,网站建设上市公司,成都网站建设优化目录 单链表 什么是单链表? 代码定义单链表 初始化单链表 单链表的插入与删除 双链表 循环链表 静态链表 定义 静态链表的插入 单链表 什么是单链表? 顺序表中每个结点只存放数据元素,而单链表中每个节点除了要存放数据元素之外&am…

目录

单链表

什么是单链表?

代码定义单链表

初始化单链表

单链表的插入与删除

双链表

循环链表

静态链表

定义

 静态链表的插入


单链表

什么是单链表?

顺序表中每个结点只存放数据元素,而单链表中每个节点除了要存放数据元素之外,还要存储指向下一个结点的指针。

单链表与顺序表相比,优点是不要求大片的连续空间,改变容量方便,缺点是不可随机存取,要耗费一定空间存放指针。

代码定义单链表

两种方法一样

typedef struct LNode {//定义单链表结点类型ElemType data;//每个节点存放一个数据元素struct LNode* next;//指针指向下一个节点
}LNode, * LinkList;
struct LNode {ElemType data;struct LNode* next;
};
typedef struct LNode LNode;
typedef struct LNode* LinkList;

要表示一个单链表时,只需要声明一个头指针L,指向单链表的第一个结点

初始化单链表

不带头结点

typedef struct LNode {//定义单链表结点类型ElemType data;//每个节点存放一个数据元素struct LNode* next;//指针指向下一个节点
}LNode, * LinkList;
bool InitList(LinkList& 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;
}

单链表的插入与删除

插入

Status ListInsert(LinkList* L, int i, ElemType e) {int j;LinkList p, s;p = *L;j = 1;//寻找第i个结点while (p && j < i) {p = p->next;++j;}if (!p || j > i)return ERROR;s = (LinkList)malloc(sizeof(Node));s->data = e;s->next = p->next;p->next = s;return OK;
}

删除

Status ListInsert(LinkList* L, int i, ElemType *e) {int j;LinkList p, q;p = *L;j = 1;while (p->next && j < i) {//遍历寻找第i个元素p = p->next;++j;}if (!(p->next) || j > i)return ERROR;q = p->next;p->next = q->next;*e = q->data;free(q);return OK;
}

双链表

单链表的每个结点都有指向后继的指针域,现在再加上一个指向前驱的指针域,这样的链表称为双链表。

typedef struct DulNode {ElemType data;struct DuLNode* prior;//直接前驱指针struct DuLNode* next;//直接后继指针
}DulNode, * DuLinkList;

循环链表

将单链表中终端结点的指针端由空指针改为指向头结点,使整个单链表形成—个环,此时这个环叫循环链表。

在循环的判断上,单链表是判断p->next是否为空,循环链表是判断p->next是否等于头节点。

用尾指针来表示循环链表时,查找开始节点和终端节点都很方便。

如合并两个循环链表,它们的尾指针分别是rearA和rearB

p = rearA->next;//保存A表的头节点
rearA->next = rearB->next->next;//将本是指向B表的第一个节点(不是头节点)赋值给rearA->next
q = rearB->next;
rearB->next = p;
free(q);

静态链表

定义

用数组代替指针描述单链表,这种链表叫静态链表。

为了方便插入数据,通常会把数组建立得大一些。

#define MAXSIZE 1000
//静态链表
typedef struct {ElemType date;int cur;
}Component, StaticLinkList[MAXSIZE];

 静态链表的插入

在动态链表中,结点的申请和释放分别借用malloc()和free()两个函数来实现。在静态链表中,我们需要自己实现这两个函数。

//若备用空间链表非空,则返回分配的结点下标,否则返回0
int Malloc_SSL(StaticLinkList space) {int i = space[0].cur;//当前数组第一个元素的cur存的值就是返回的第一个备用空间的下标if (space[0].cur) {//由于要拿出一个分量来使用,所以要把下一个分量用来做备用space[0].cur = space[i].cur;}return i;
}

http://www.dtcms.com/wzjs/420116.html

相关文章:

  • 无锡自助做网站友情链接的方式如何选择
  • 网站上怎么做全景看图长沙seo优化排名
  • 广州网站制作建设seo网页推广
  • 设计工作室需要办理营业执照吗搜索引擎优化什么意思
  • 网站建设界面建议搜索引擎推广一般包括哪些
  • 上海空气中检测出阳性沈阳网站seo
  • 凡科网站设计百度百科推广联系方式
  • 傻瓜做网站视频seo优化教程
  • 代办公司注册需要什么材料武汉seo哪家好
  • 单页网站编辑器百度广告推广
  • 安丘网站建设报价seo美式
  • 海口市做网站的公司前端开发
  • 房地产三道红线搜索引擎优化人员优化
  • 建设银行网站会员注销西安关键词排名软件
  • 快手流量推广免费网站重庆专业做网站公司
  • 织梦备份网站数据太原关键词优化服务
  • 怎么在网站做系统网站优化公司
  • 做美足网站违法吗上海关键词优化排名哪家好
  • 各类网站规划百度一下百度搜索入口
  • 富德生命人寿保险公司官方网站保单查询最新疫情爆发
  • 襄阳网络公司 网站建设温州seo外包公司
  • 做任务赚钱的网站有哪些排名第一的助勃药
  • 广告传媒建设网站长沙网站seo收费标准
  • 做网站花多钱搜索引擎入口网址
  • 免费建站的方法永久免费域名注册
  • 什么网站是做货到付款的培训计划模板
  • 简单模板网站制作时间网络推广官网首页
  • 廊坊文安建设局网站成都网站快速排名优化
  • 做安全宣传的是什么网站网站seo设置是什么意思
  • 怎么用虚拟主机做网站百度推广客服电话24小时