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

16_链表的定义

定义:

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

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

专业术语:

         首节点:第一个有效节点

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

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

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

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

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

分类:

算法:

链表的优缺点:

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

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

         只需要一个参数:头指针

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

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

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

CASE 1

#include

 

typedefstruct Node

{

         int data;//数据域

         struct Node * pNext;//指针域

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

intmain(void)

{

        

         return 0;

}

19_链表的分类

分类:

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

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

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

非循环链表:

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

算法:

         遍历

         查找

清空

销毁

求长度

排序

删除节点

插入节点

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

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

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

。。。。。。

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

删除

算法1(不采用):

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

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

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

r=p->pNext;

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

free(r);

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

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

23_ 复习

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