数据结构:程序加图示分析单链表的插入和删除操作

本文详细分析了单链表结构,包括插入和删除操作。在插入操作中,即使链表为空也能优雅处理。删除操作则需要找到节点的前趋,对于首个节点的删除需要特殊处理。通过示例程序和流程图,阐述了如何消除特殊情况,简化代码逻辑。
摘要由CSDN通过智能技术生成

下图展示了单链表的基本结构:

head指针是链表的头指针,指向第一个节点,每个节点的next指针域指向下一个节点,最后一个节点的next指针域为NULL,在图中用0表示。

下面先来看程序(栈的链式存储实现,另外一个实现点这里)和对应的输出(注意输出前进行了链表反转(见《单链表反转》,否则程序后面的while循环输出的顺序是250,200,100),接着来分析程序:

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

/* linkedlist.h */

#ifndef LINKEDLIST_H
#define LINKEDLIST_H

typedef  struct node *link;
struct node
{
     unsigned  char item;
    link next;
};

link make_node( unsigned  char item);
void free_node(link p);
link search( unsigned  char key);
void insert(link p);
void deletep(link p);
void traverse( void (*visit)(link));
void reverse( void);
void destroy( void);
void push(link p);
link pop( void);

#endif
 C++ Code 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值