反序排列单链表

#include <stdlib.h>
#include <assert.h>
#include <stdio.h>


typedef struct NODE
{
   int value;
   struct NODE *link;
} Node;

/* 创建一个链表 */
Node* newnode( int value )
{
   Node *new;
   new = (Node *)malloc( sizeof( Node ) );
   assert( new != 0 );//如果new = NULL,则打印错误报告
   new -> value = value;
   return new;
}

/* 创建插入链表 */
int sll_insert( register Node **linkp, int new_value )
{
 register Node *current;
 register Node *new;
 while( ( current = *linkp ) != NULL && current -> value < new_value )
  linkp = &current -> link;

 new = ( Node* )malloc( sizeof( Node));
 if( new == NULL )
   return 0;

 new -> value = new_value;

 new -> link = current;
 *linkp = new;
 return 1;
}


struct NODE * sll_reverse( struct NODE *current )
{
   struct NODE *previous;
   struct NODE *next;

   for( previous = NULL; current != NULL; current = next )
	{
       next = current -> link;
       current -> link = previous;
       previous = current;
    }

   return previous;
}

int main()
{
   Node *root;
   root = newnode( 5 );//root指向第一个链表
   root -> link = NULL;//第一个link字段设置为NULL

   sll_insert( &root, 3 );//插入第二个链表
   sll_insert( &root, 7 );//插入第三个链表

   /* 顺序排列 */
   printf( "%d\n", root -> value);
   printf( "%d\n", root -> link -> value);
   printf( "%d\n", root -> link -> link -> value);

   printf( "\n\n");
   root = sll_reverse( root );//反向排序

   /* 反序排列 */
   printf( "%d\n", root -> value);
   printf( "%d\n", root -> link -> value);
   printf( "%d\n", root -> link -> link -> value);

   return 0;
}

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值