首页 > 编程知识 正文

数据结构c语言版笔记,数据结构笔记整理

时间:2023-05-05 08:16:39 阅读:159951 作者:1725

一.线性链表要素删除参考书: 《数据结构(C语言)》撒娇豆等编,清华大学出版社。

1、删除思想如图所示,线性链表初始化为1、2、3、4、5时

要删除第三个位置的元素步骤:

)找到第I个位置的前体,用p指向i-1处;

2 )制作q节点,使其位于p的next,把q的next赋予p的next,使第2位置和第4位置相连

)3)此时,将q的位置值代入e并返回,返回free(q )或delete 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 ); if(L==null ) exit overflow; 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的值分配给p q-next=p; //q的next指的是p p-next=NULL; //p的next指的是空q=q-next; //q后移}返回确定; }statuslistdelete_l(linklistl,int i,ElemType e ); //从链表中删除第I个位置的值,并将其值statuslistdelete_l(linklistl,int i,ElemType e ) {LinkList p; p=L; int j=0; 构造//j变量,然后使用判断合法性的while(p-nextJi-1 ) /查找第I个位置,作为I的前驱p=p-next; j; (if (! (p-next(|Ji-1 )返回错误; //删除位置不合理的lnode*q=(linklist ) malloc ) sizeof ) lnode ); q=p-next; p-next=q-next; e=q-data; free(q; //删除并释放节点return 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 ',I ); if(listdelete_L(L,I,e ) ) ListDisPlay_L(L ) l; else printf (删除位置不正确); 返回0; 使用(/)链表的存储结构,实现对顺序表的删除操作,给出删除位置,输出删除后的线性表的要素。 删除位置不符合规则时,删除位置不正确。 初始化线程表示1、2、3、4、5例如输入: 4输出: 1、2、3、5输入:-4输出:删除位置错误*/实现:

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

删除: 3

删除:-1

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