关闭

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

标签: 数据结构c语言链表指针
836人阅读 评论(1) 收藏 举报

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_复习
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11141次
    • 积分:335
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:3篇
    • 译文:0篇
    • 评论:1条