【郝斌数据结构自学笔记】16-23_链表的定义与分类_链表节点插入与删除_每一个链表节点的数据类型该如何表示的问题

原创 2015年11月18日 21:45:25

16_链表的定义

定义:

         n个节点离散分配;彼此通过指针相连;每个节点只有一个后续节点,首节点没有前驱节点,尾节点没有后续节点。

专业术语:

         首节点:第一个有效节点

尾节点:最后一个有效节点

头节点:头节点的数据类型和首节点的数据类型相同。第一个有效节点之前的那个节点;头节点并不存放存放有效数据;加头节点的目主要是为了方便对链表的操作。

头指针:指向头节点的指针变量

尾指针:指向尾节点的指针变量

头节点-首节点。。。。。。尾节点【头节点并没有存储有效数据,也没有存放链表中有效节点的个数。首节点开始存放有效数据。在链表前边加一个没有实际意义的头节点,可以方便对链表的操作。头节点于之后节点的数据类型相同】

分类:

算法:

链表的优缺点:

17_如果希望通过一个函数来对链表进行处理,我们至少需要接受链表的哪些参数

如果希望通过一个函数来对链表进行处理,我们至少需要接受链表的哪些参数

         只需要一个参数:头指针

         因为我们通过头指针可以推算出链表的其他所有参数

18_每一个链表节点的数据类型该如何表示的问题


CASE 1

#include<stdio.h>

 

typedefstruct Node

{

         int data;//数据域

         struct Node * pNext;//指针域

}NODE,*PNODE;//NODE等价于structNode,PNODE等价于struct Node *

intmain(void)

{

        

         return 0;

}

19_链表的分类

分类:

         单链表:每个链表的指针域只能指向后面的节点

双链表:每一个节点有两个指针域

循环链表:能通过任何一个节点找到其他所有的结点

非循环链表:

20_非循环单链表插入节点伪算法讲解

算法:

         遍历

         查找

清空

销毁

求长度

排序

删除节点

插入节点


插入算法1)r=p->pNext;p->Next=q;q->pNext=r;

插入算法2)q->Next=p->pNext;p->Next=q;【p,q不是节点,是指针变量】

。。。。。。

21_删除非循环单链表节点伪算法的讲解

删除

算法1(不采用):


p->pNext=p->pNext->pNext;//容易导致内存泄露,没有释放内存

算法2:先临时定义一个指向p后面节点的指针r

r=p->pNext;

p->pNext=p->pNext->pNext;

free(r);


22_学习数据结构的目的和要达到的要求

23_复习
版权声明:本文为博主原创文章,未经博主允许不得转载。

C++ 数据结构的单链表的建立,插入,删除操作

动态内存分配应用举例(链表)  我们知道,数组式计算机根据事先定义好的数组类型与长度自动为其分配一连续的存储单元,相同数组的位置和距离都是固定的,也就是说,任何一个数组元素的地址都可一个简单的公式计...
  • u012746763
  • u012746763
  • 2015年05月27日 10:21
  • 2317

数据结构Java实现 --单向链表的插入和删除

文本主要内容: 链表结构单链表代码实现单链表的效率分析 一、链表结构: (物理存储结构上不连续,逻辑上连续;大小不固定)            概念:   链式存储结构是基于指针实现的。我们把...
  • mlljava1111
  • mlljava1111
  • 2015年10月08日 22:23
  • 4889

c++链表 建立 输入 输出 删除结点 插入结点 释放链表 的函数

Description 编写一个函数creatlink,用来建立一个动态链表。(包含学号和成绩) 编写一个函数printlink,用来输出一个链表。 编写一个函数dellink,用来删除动态链表中一...
  • u012334850
  • u012334850
  • 2014年03月10日 21:05
  • 1983

数据结构-用链表函数实现链表节点的插入

描述 链表节点的插入操作是线性表数据结构对象操作的重要内容,请您写一个程序完成用链表函数对一个链表某一个节点的插入操作。 请用如下函数完成上述功能,线性表List的定义...
  • a997930294
  • a997930294
  • 2013年08月05日 20:24
  • 1291

数据结构 链表节点的删除

  • 2009年11月03日 22:12
  • 77KB
  • 下载

数据结构:单链表(二)之链表节点排序,升序插入数据,删除指定的所有节点,翻转链表操作

在单链表(一)的基础上新增加了一些功能: ********************************************************* *********************...
  • lixiaogang_theanswer
  • lixiaogang_theanswer
  • 2017年04月18日 22:48
  • 137

【郝斌数据结构自学笔记】27-29_链表插入和删除算法的演示_复习

27_如何学习算法自己的一些感想 28_链表插入和删除算法的演示 #include #include #include   typedefstruct Node {          ...
  • NewNicholas
  • NewNicholas
  • 2015年11月21日 01:43
  • 520

删除链表节点(链表倒置)

import java.util.Stack; class Nodes{ int data ; Nodes next; Nodes(){} Nodes(int data...
  • u012637437
  • u012637437
  • 2015年04月24日 16:55
  • 273

内核链表使用--删除链表节点

当我们使用遍历的方法来删除链表时: list_for_each(pos, &student_list) { list_del(pos); } list_for_each(pos, he...
  • sunnyzld
  • sunnyzld
  • 2012年03月30日 11:08
  • 49

关于递归删除链表节点为什么不会断链问题解释

问题的由来:    当你第一次实现用递归实现链表删除功能的时候,是否有一丝丝的考虑过。这个问题呢?为什么对于非递归版本的删除必须要知道当前要删除节点的前驱,而需要对其前驱节点的next域指针进行修改。...
  • u010016150
  • u010016150
  • 2015年06月22日 13:27
  • 2303
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【郝斌数据结构自学笔记】16-23_链表的定义与分类_链表节点插入与删除_每一个链表节点的数据类型该如何表示的问题
举报原因:
原因补充:

(最多只允许输入30个字)