下图展示了单链表的基本结构:
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
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 1 |

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

被折叠的 条评论
为什么被折叠?



