单链表(不带头结点)

2026/1/27 14:24:56

一.单链表 (不带头结点): 1.头插

/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name:

Author:Jerey_Jobs Version:0.1 Date: Description:创建链表用头插法 Funcion List:

*****************************************************/

#include #include #include

struct node /*定义链表节点*/ {

int num;

struct node *next; };

typedef struct node Node ; /*简化表示链表节点*/ typedef struct node *Link ;

void create_link( Link *head ) /*创建新的,空的链表*/ {

*head = NULL ; }

void is_malloc_ok( Link *new_node ) /*判断节点是否创建成功*/ {

if( ( *new_node == NULL ) ) {

printf( \ exit( -1 ); } }

void create_new_node( Link *new_node, int i ) /*创建新的节点*/ {

( *new_node ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( new_node );

( *new_node ) -> num = 9-i ; }

void insert_node_head( Link *head, Link *new_node ) /*头插*/ {

( *( new_node ) ) -> next = *head ; *head = *new_node; }

void display_link( Link *head ) /*遍历*/ {

Link tmp ; tmp = *head;

while( tmp != NULL ) {

printf( \ tmp = tmp -> next ; } }

void release_link( Link *head ) /*释放*/ {

Link tmp; tmp = *head;

while( *head != NULL ) {

( *head ) = ( *head) -> next; free( tmp ); tmp = ( *head ); } }

int main() {

Link head = NULL ;

Link new_node = NULL; int i ;

create_link( &head );

for( i = 0; i < 10; i++ ) {

create_new_node( &new_node , i );

insert_node_head( &head, &new_node ); }

display_link( &head ); release_link( &head );

return 0; }

2.尾插

/***************************************************** copyright (C), 2014-2015, Lighting Studio. Co., Ltd. File name:

Author:Jerey_Jobs Version:0.1 Date: Description:创建链表用尾插法 Funcion List:

*****************************************************/

#include #include #include

struct node /*定义链表节点*/ {

int num;

struct node *next; };

typedef struct node Node ; /*简化链表节点表示*/ typedef struct node *Link ;

void create_link( Link *head ) /*创建新的,空的链表*/ {

*head = NULL ; }

void is_malloc_ok( Link *new_node ) /*判断节点是否创建成功*/ {

if( ( *new_node == NULL ) ) {

printf( \ exit( -1 ); } }

void create_new_node( Link *new_node, int i ) /*创建节点*/ {

( *new_node ) = ( Link )malloc( sizeof( Node ) ); is_malloc_ok( new_node ); ( *new_node ) -> num = 9-i ; }

void insert_node_tail( Link *head, Link *new_node ) /*尾插插入节点*/ {

Link tmp; tmp = *head;

if( tmp == NULL ) /*判断链表为空,则头插*/ {

( *new_node ) -> next = tmp ; *head = *new_node; }

else /*链表不为空,则尾插*/ {

while( tmp -> next != NULL ) {

tmp = tmp -> next; }

tmp -> next = ( *new_node ); ( *new_node ) -> next = NULL ; } }

void display_link( Link *head ) /*遍历*/ {

Link tmp ; tmp = *head;

while( tmp != NULL ) {

printf( \ tmp = tmp -> next ; } }

void release_link( Link *head ) /*释放*/ {

Link tmp ; tmp = *head ;

while( *head != NULL ) {


单链表(不带头结点).doc 将本文的Word文档下载到电脑
搜索更多关于: 单链表(不带头结点) 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219