首页 > 编程知识 正文

线性表C语言,单链表程序设计C语言

时间:2023-05-03 08:37:05 阅读:159958 作者:3315

线性表的链接存储结构的特征线性表的链接存储结构的特征是存储任何一组存储器单元的线性表的数据元素(所述组存储器单元可以是连续的或不连续的)。

因此,为了表示每个数据元素与其直接连接的数据元素之间的逻辑关系,对于某些数据元素,除了其自身的信息外,还必须存储表示其连接的信息。

结点是包含这两种信息的数据元素的存储映像。 一个节点包含两个域:数据域指针域

数据域是存储数据元素信息的域。

指针域是直接存储后续存储位置的域。

存储在指针字段中的信息称为指针和链。 n个节点链构成链表,是线性表的链存储结构。 如果链表中的节点只包含一个指针字段,则也称为线性链表或单链表。

头指针对整个链表的访问必须从第一个指针开始,该指针指示链表中第一个节点的存储位置。 如果指针是数据元素之间逻辑关系的图像,则逻辑上相邻的两个数据元素的存储物理位置不必相邻。 因此,这种存储结构可以是非顺序图像或链图像。

单链表可以用头指针唯一确定,在c语言中可以用结构指针来描述。

//线性表的单链表存储结构typedefstructlnode { elemtype data; 结构lnode * next; }LNode,* Linklist; 假设La是Linklist类型的变量,则La将成为指向表中第一个节点的单链表的头指针。 如果La为“空”,即(La=NULL ),则表示的线性表为空表,并且长度n为“零”。 有时,可以在单链接列表中的第一个节点之前添加一个名为头结点的节点。 在报头节点的数据字段可以不存储任何信息,也可以存储线性表的长度等附加信息,而在报头节点的指针字段中存储至第一节点的指针。

在线性表的顺序存储结构中,逻辑上相邻的两个要素在物理上相邻,所以各要素的存储位置可以从线性表的开始位置计算出来。 在单链表中,两个元素的存储位置之间没有固定的联系。 但是,各要素的存储位置包含在其直接前驱节点的信息中。 当p是指向线性表的第I个数据元素的指针时,p-next是指向第i 1个数据元素的指针。 也就是说,如果p-data=a (数据元素),则p-next-data=ai (下一个数据元素)。 在单链表中,为了获取第I个数据元素,必须从一开始就用指针查找,所以是单链表表示的非随机访问的存储结构。

实现以下函数GetElem

# defineo k1 # define error-1 typedefintelemtype etypedefintstatusstatusgeteleml (link list l,int i,elemtype )/L是起始节点的单环while(pJi ) { p=p -next; j; (if (! p||j i )返回错误; e=p-data; 返回确定; } //GetElemL

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。