[2018年最新整理]CH3线性表.pptVIP

  • 2
  • 0
  • 约1.24万字
  • 约 59页
  • 2018-02-20 发布于浙江
  • 举报
[2018年最新整理]CH3线性表

3、结点的组成: 数据域 指针域 数据域----表示数据元素自身值。 指针域(链域)----表示与其它结点关系。 通过链域,可将n个结点按其逻辑顺序链接在一起(不论其物理次序如何)。 4、单链表: ----每个结点只包含一个指向后继结点的链域。 表头结点---(无前趋)用头指针指向之。虽然头指针只指向表头结点,但从表头指针出发,沿着结点的链(即指针域的值)可以访问到每个结点,故常以表头指针来命名一个链表。 表尾结点---指针为空(无后继),用 ^或null表示。 中间结点---由其前趋的指针域指向之。 a1 a2 an ^ Head …… a1 an ^ Head …… ?单链表: 头结点---其指针域 指向表中第一个结点的指针。 空表---头指针为空。 单链表的描述 单链表由头指针唯一确定,因此单链表可以用头指针的名字来命名。 例如:若头指针为head,则可把链表称为“表head”。 a1 a2 an ^ Head …… ^ Head typedef int datatype; typedef struct node /*结点类型定义*/ { datatype data; /*数据域*/ struct node *next; }JD; /*next为指针域,指向该结点的后继*/ typedef JD *Link; Link head, p; /*指针类型说明*/ ?5、单链表的建立: (1)单链表内节点的定义 p 结点 (*p) data next 指针p与指向的结点关系示意图: p 结点 (*p) 说明: p---指向链表中某一结点的指针。 *p---表示 由指针p所指向的结点。 (*p).data或p-data----表示由p所指向结点的数据域。 (*p).next或p-next----表示由p所指向结点的指针域。 data next (2)具有节点数据结构的p的含义 p=(Link)malloc(sizeof(JD))----对指针p赋值使其指向某一结点(按需生成一个JD结点类型的新结点)。 其中: (Link)----进行类型转换。 Sizeof(JD)---求结点需要占用的字节数。 Malloc(size)--在内存中分配size个连续可用字节的空间。 Free(p)--系统回收p结点。(动态) (3)配置内存空间 节点定义后,程序并不会马上配置我们所需的内存空间,而是需利用malloc( )向系统要求配置内存空间,如: 当内存配置成功时,p所返回的将是一个指针,当内存配置失败时,p所返回的则是NULL指针。(使用malloc( )时,必须在程序开头:#includestdlib.h) (4)内存配置成功后状态 内存配置成功后,其内存结构如下: data next p 假设这个节点的数据为23,将next设为NULL,则可用: p-data= 23; p-next= NULL; 来表示。 注:当程序不再需要内存时,请用free(p)释放。 (5)建立链表 单链表的建立就是将每一个结点单向地串连起来。如: Data Next Alan Data Next Bob Data Next Tom Node_1 Node_2 Node_3 NULL NULL NULL Data Next Alan Data Next Bob Data Next Tom Node_1 Node_2 Node_3 NULL NULL NULL 现将三个结点依次串连成单链表,则为: Node_1-Next=Node_2; Node_2-Next=Node_3; 建立链表描述 Link Create_List (Link Head) { int dataval,i; Link New, Pointer; Head=(Link)malloc(sizeof(JD)); if(Head= =NULL) printf(“Memory allocate fail\n””); else { printf(“Input the dataval:

文档评论(0)

1亿VIP精品文档

相关文档