首页 > 编程知识 正文

数据结构耿国华,单链表算法流程图

时间:2023-05-05 01:29:47 阅读:159901 作者:602

一.线性链表参考书: 《数据结构(C语言)》速米等编,清华大学出版社。

1 .链接存储结构线性表的链接存储结构的特征在于,用任意的一组存储器单元存储线性表的数据元素。 与序贯存储结构的不同之处在于,该组存储单元可以是连续的也可以不是连续的,且存储方式为顺序存取,序贯存储结构为3358ww .其优缺点具有以下特征。

优点:

1、节点空间可以动态申请或释放;

2、数据元素按逻辑顺序按随机存取指示,插入和删除不需要移动大量元素;

坏处:

1、存储密度太小(1),指针字段需要额外的存储空间;

路线链表还分为有头链表和无头链表。

无头链表如下。

第一个链表如下

链表中头节点的指针

1、方便首节点处理。 由于起始节点的地址保存在起始节点的指针字段中,在链表最初位置的操作与其他位置一致,不需要进行特别的处理;

2、头节点便于空表和非空表的统一处理,无论链表是否为空,头指针都指向头节点的非空指针;

2、建立和插入线性链表的操作步骤:

在第三个位置之前插入三要素步骤:

(1)寻找i-1的位置,使p指向i-1的位置;

)2)制作q节点,存储e要素)3),将p的next分配给q的next,将p节点连接到3上。 如下所示。

)3)进一步将p的next指向q,就会变成串珠子;

相关代码:

# include ' stdio.h ' # include ' stdlib.h '/# include ' link list.h ' # define error0# defineo k1 # define true1# define true typedefstructlnode { elemtype data; //数据域(信息域) struct LNode *next; //指针字段} LNode,*LinkList; satuscreatelist_l(linklistl,int n );//具有n个元素的有头节点的链表LStatusCreateList_L(LinkListL,int n ) {LinkList p,q; int i; L=(linklist ) malloc (sizeof ) lnode ); L-next=NULL; q=L; //最初为l (头)----nullfor ) I=1; i=n; I ) ) p=(linklist ) malloc ) sizeof ) lnode ); 定义//p节点的存储值//Scanf(%d )、p-data; p-data=i; 将//I值代入pq-next=p//q的next指的是pp-next=NULL; //p的next指的是NULLq=q-next; //q后移}返回确定; }statuslistinsert_l(linklistl,int i,ElemType e ); //在链表的第I个位置之前,元素e的值statuslistinsert_l(linklistl,int i,ElemType e ) {LinkList p,q; p=L; int j=0; //j创建变量,然后使用判断合法性的while(pji-1 ) ) /确定i-1的位置p=p-next; //p后移动到指向i-1的位置j; (if (! p || ji-1 )返回错误; //I值小于1或大于表长度=(linklist ) malloc ) sizeof ) lnode ); //生成新节点qq-data=e的q-next=p-next; //p的从next到q的nextp-next=q; 将//p的next指向q,连接一系列的返回ok; }statuslistdisplay_L(lnode*L ); //链表Statuslistdisplay_L(lnode*L ) {LNode *p; p=L-next; //p是头节点if (p==空) exit ) overflow ); ELSE{while(p!=null(if ) p-next!=NULL ) printf('%d,',p-data ); else{printf('%d ',p-data; (}p=p-next; //p向后移动指针}}intmain(void ) {LinkList L; createlist_l(L,5 ); //这里为了测试,采用1、2、3、4、5的链表,根据自己的情况进行int i、e; //插入位置和元素scanf('%d%d ',I,e ); if(listinsert_L(L,I,e ) ) ListDisPlay_L(L ) l; elseprintf (插入位置不正确); 返回0; 使用(/)链表的存储结构,实现链表的插入操作,给定插入位置,输出插入后的线性表的要素。 插入位置不符合规律时,插入位置不正确。 初始化线程表示1、2、3、4、5例如输入:3 3输出: 1、2、3、3、4、5输入:-4 3输出:插入位置错误*/实现:

初始链表:1、2、3、4、5

插入:3 3

插入:-1 2

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