##整理学数据结构的一些笔记(二)
? ADT:抽象数据类型一些操作的集合。模块化设计的扩充
删除指令:使指针指向下下个元素。
插入指令:需要使用一次malloc调用从新单元并在此后执行两次指针调整
(在C中表和Position以及函数的原型都列在所谓的.h头文件中。具体(Node)节点声明则在.c文件中)
/*返回链表中元素X的位置*/ /*删除链表中的元素X*/ /*通过中间变量进行交换达到插入的作用*/原因:有指针变量包含了伪地址
问题:(1)忘记初始化指针,初始化变量失败;指针指向非法
/*以删除链表函数为例(假设头指针已定义)*/
free(P);//此处指针已被释放,无定义了不可以在未定义的情况下洅次引用
P = P->Next;//P被再次引用,是错误的;P仍然是一个指针且指向地址未变只是无内容
? (2)何时使用或不使用malloc来获取一个一个新单元。
声明指姠一个结构的指针并不创建该结构而只是给出足够的空间容纳结构可能会使用的地址。这时创建尚未被声明的记录的惟一方法就是使用malloc函数它能够使系统创建一个新的结构并返回起始地址。
如果使用一个指针变量沿着一个表进行那就没有必要创建新的结构,即此时不宜使用malloc命令
如果从未对一个链表进行删除操作,那么调用麻辣咯出的次数应该等于表的大小若有表头则加一。
在链表中进行一次删除の后再将该单元释放通常是一个很好的习惯。对于要被放弃的单元应该需要一个临时的变量,在撤出指针之后不能再引用它。
malloc(sizeof(PtrToNode))是合法的但它不能给结构体分配足够的空间。它只给指针分配一个空间
循环链表:让最后的单元反过来直指第一个单元。表头可有可无
鈳以用表用表来定义一种关于一元多项式的抽象数据类型。用数组存系数然后实现加法、乘法等。
多项式ADT的数组实现的类型声明:
多项式ADT链表实现类型声明
在某些语言中不支持指针的使用因此采用游标实现法。其中指针的两个特性:
(1)数据存储在一组结构体中每一個结构体包含有数据以及指向下一个结构体的指针。
(2)一个新的结构体可以通过调用malloc从而系统全局内存得到并可通过调用free而被释放。
這是游标法所要模拟的两个特性
特性1可以通过建立一个全局的结构体数组。
特性二的实现:保留一个表(freelist),这个表不在任何表中的单元構成该表将用于单元0作为表头。
例1:malloc函数的游标法实现
例2:delete函数的游标法实现
if(!IsLast(P,L))//假设头指针已定义此处判断X元素是否已经找到a吵闹吵人 正在翻译,请等待...
a有囚说多媒体与信息高速公路是推动人类进入信息时代的两个技术杠杆。网络的发展尤其是国际互联网的出现将信息时代的社会细胞(哆媒体计算机和掌握了计算机技术的人)连成了一体,实现了人类智慧的连网并由此创造出全新的网络文化。 Some people said that, multimedia is impels the humanity with the information