单链表(不带头结点)

2026/1/27 12:41:57

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 convert_link( Link *head ) /*逆序*/ {

Link p1 = NULL ; Link p2 = NULL ; Link p3 = NULL ;

p1 = p2 = p3 = *head;

if( *head == NULL ) {

printf( \ return ; }

if( (*head) -> next == NULL ) {

return ; }

p2 = p1 -> next ;

if( p2 -> next == NULL ) {

p2 -> next = p1; p1 -> next = NULL; *head = p2; return ; }

p3 = p2 -> next ;

while( p3 -> next != NULL ) {

p2 -> next = p1; p1 = p2; p2 = p3;

p3 = p3 -> next; }

p3 -> next = p2; p2 -> next = p1;

( *head ) -> next = NULL ; *head = p3; }

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_tail( &head, &new_node ); }

display_link( &head ); printf( \

convert_link( &head ); display_link( &head );

release_link( &head );

return 0; }


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

下载本文档需要支付 10

支付方式:

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

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