首页 > 编程知识 正文

单循环链表是线性数据结构,线性链表和单链表的区别

时间:2023-05-06 11:12:32 阅读:159898 作者:879

线性链表的存储结构特征:用一组任意的存储单元存储线性链表的数据元素。 存储单元可以是连续的或不连续的

数据要素a与其直接后继a 1之间的逻辑关系在数据要素a的情况下,除了自身的信息之外,还需要存储表示直接后继的信息、即直接后继的存储位置。 这两个信息构成数据元素a的存储映像,结点( node)

它有两个域。 存储数据元素信息的域为数据域; 存储直接的随后的存储位置的域存储在指针域指针字段中的信息被称为指针

n个节点(AI(1In )的存储映像)被耦合在一个链表或线性表格式的存储结构中。 也称为线性链表单链表,因为此链表中的每个节点只包含一个指针字段。

链表从第一个指针开始,头指针中的信息是第一个节点,即第一个数据元素的存储映像的存储地址。 指向线性链表中最后一个节点的指针指向“http://www.Sina.com /”3358 www.Sina.com /

指针是数据元素之间逻辑关系的图像。

逻辑上相邻的两个数据元素不必在存储器的物理位置上相邻,例如(NULL)

头节点:在单链表中的第一个节点之前设置节点。 在报头节点的数据字段中,可以不存储任何信息,也可以存储线性表的长度等附加信息。 标题节点指针字段存储指向第一个节点的指针,即第一个元素节点的存储位置

statusgetelem_l(linklistl,int i,ElemType e )//l表示第一个节点的单链表的第一个指针(如果第/I个元素存在,则代入e返回OK值,如果不存在,则返回errorp=l-l j=1; 初始化//L,p指向第一个节点,j用计数器While(PJI ) /正向指针查找后面,知道p指向第I个元素,或者p为空p=p - next; j; (if (! p|||Ji(returnerror;//第I个元素中不存在e=p - data;//取第I个元素return OK; }GetElem_L时间复杂度: o(n ) ) ) ) )0)

插入和删除链表:

插入算法:

statuslistinsert_l(linklistl,int i,ElemType e )//将元素ep=L插入到第一节点单链线性列表l的第I位置; j=0; while(PJI-1 )//I-1查找第一个节点p=p-next; j; (if (! p || ji-1 )返回错误; s=(linklist ) malloc (sizeof ) lnode ); //生成新节点s-data=e的s-next=p-next; 在//L中插入的p-next=s; 返回确定; (/listinsert_Ls=(linklist ) malloc ) sizeof ) lnode ); 游戏中心生成LNode型节点,起到将该节点的开始位置代入指针变量s的作用

时间复杂性: o(n ) )。

删除算法:

statuslistdelete_l(linklistl,int i,ElemType e ) /从第一个节点的单链线性列表l中删除第I个位置的元素,并从e返回其值p=L; j=0; 查找第while(PJI )//I个节点,使p指向其前驱p=p-next; j; (if (! p || ji-1 )返回错误; q=p-next; p-next=q-next; //删除并释放节点e=q-data; free(q; //粒子返还系统return OK; //listdelete_Lfree(q; 作用是,系统回收1个LNode型节点,在再生成节点中具备回收的空间

时间复杂性: o(n ) )。

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