首页 > 编程知识 正文

顺序表的增删改查,单链表的增删改查

时间:2023-05-03 06:37:48 阅读:48254 作者:509

另一方面,链表的概要链表是物理存储结构上的非连续、非顺序的存储结构,数据元素的逻辑顺序由链表的指针链接顺序实现。 与数组的区别:

链表是链式存储结构,数组是顺序存储结构。

链表用指针连接元素和元素,数组按顺序存储所有元素。

优缺点如下。

二、链表前准备工作1 .节点配置数据域:存储用户需要的实际数据指针的域:存储下一个节点的地址2.malloc函数原型: void * malloc (unsigned id ) 功能:向内存动态存储区请求size字节的连续存储区,并返回该存储区的起始地址。 如果分配的内存不足,则函数的返回值为空指针。 说明:请注意,此函数返回void指针,因此在使用时将强制类型转换为所需的指针类型。 3.free函数原型:语音自由(语音* p ); 功能:释放指针变量p指向的存储区域,更换为系统。 三、链表的建立1 .末尾插入法特点:输入顺序(存储顺序)和输出顺序相同的图解)核心代码end-next=p; //尾节点连接新节点end=p; //结尾节点向后移动成为新的结尾节点2 .开头插入法的特征:输入顺序(储存顺序)和输出顺序相反的图解)。

核心代码: p-next=head-next; //新节点指向第一个节点的下一个head-next=p头节点连接新节点3 .完整代码structnode*creat((//头指针head,末端指针end,以及指向新节点的指针//head=(结构节点* ) malloc (大小) sizeof (结构节点) )初始化; //动态申请内存的end=head; 头下一个=空; p=(结构节点* ) malloc ) sizeof (结构节点); 扫描(' % d ',p-data ); while (p数据!=0() /输入的值为0时,(/) /被注释掉的是开头插入法(//p-next=头下一个; //head-next=p; 结束-下一步=p; p-next=空值; 结束=p; //上述3行无注释为末尾插入法p=(structnode* ) malloc (sizeof ) strcutnode ); 扫描(' % d ',p-data ); (自由) p; //释放最后申请的空间返回头)四、链表的基本操作1 .遍历链表找出需要插入的位置,操作指针插入新节点。

代码:

void add (结构节点* head ) {结构节点*p0=NULL,*p0=NULL; 将添加//p0的新节点int a=0定义为; p=head; printf ('请输入要添加到哪个数字之后n ); 扫描(' % d ',a ); while (p数据!=a ) )遍历链表,直到//节点的数据字段为a或p为NULLp=p-next; (if ) p!=NULL () P0=(结构节点* ) malloc (sizeof )结构节点); scanf('%d ',p0-data ); p0-next=p-next; p-next=p0; } else {printf ('找不到此数量n ' ); }返回; } 2.删除链表找到要删除的节点,操作指针删除该节点。

代码:

void delete _ (结构节点* head ) {结构节点* p=head,p0=NULL; int a=0; printf ('输入要删除的数字n ); 扫描(' % d ',a ); while (p数据!=a ()//遍历链表并找到要删除的数,或者p为空P0=p; //当前指针的点p=保存p=p-next的(if ) p!=null(P0-next=P-next; } else {printf ('找不到此数量n ' ); }返回; } 3.找到要修改其链表的节点,然后修改其数据域

代码:

voidmodity _ (结构节点* head ) {结构节点* p=head; int a=0; printf ('请输入需要修改的数字n ); 扫描(' % d ',a ); while (p数据!=a ) )遍历链表,直到p-data等于要修改的数字,或者p为NULLp=p-next; (if ) p!=null(printf ) )已修改为); 扫描(' % d ',p-data ); } else {printf ('找不到此数量n ' ); }返回; } 4.查看链表,直到找到需要查询的数据。

代码:

void search (结构节点*头部) {结构节点* p=头部; int a=0; printf ('请输入需要查询的数字n ); 扫描(' % d ',a ); while (p数据! 遍历链表,直到=a () p-data==a或p为空=p-next; (if ) p!=null(printf ) ' %dn ',p-data ); } else {printf ('找不到此数量n ' ); }返回; }

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