Revser single link example code

      单链表倒序:

#include  < stdio.h >

struct  link
{
 
int  value;
 
struct  link  *  next;
} ;


void  output_link( struct  link  *  head)
{
 printf(
"   " );
 
while (head  !=  NULL)
 {
  printf(
"  [%d]  " , head -> value);
  head 
=  head -> next;
 }
}


void  rever_output_link( struct  link  *  head)
{
 
if (head) {
  rever_output_link(head
-> next);
  printf(
"  [%d]  " ,head -> value);
 }
}

struct  link  *  create_link ( int  n)
{
 
struct  link  *  head  =  malloc( sizeof ( struct  link));
 
struct  link  * tmp,  *  pre;

 
int  i;
 pre 
=  head;
 head
-> value  =  rand();
 
for ( i  =   0  ; i  <  n  -   1 ;  i  ++  )
 {
  tmp 
=  malloc( sizeof ( struct  link));
  tmp
-> value  =  rand();
  tmp 
-> next  =  NULL;
  pre
-> next  =  tmp;
  pre 
=  pre -> next ;
 }
 
return  head;

}
struct  link  *  revert_link( struct  link  *  head)
{
 
struct  link  *  left,  *  mid ,  *  tmp;
 left 
=  head ;
 mid 
=  head -> next;
 left
-> next  =  NULL;
 
while (mid  !=  NULL)
 {
  tmp 
=  mid -> next ;
  mid
-> next  =  left;
  left 
=  mid;
  mid 
=  tmp;
 }
 
return  left;

}
void  del_link( struct  link  *  head)
{
 
struct  link  *  tmp;
 
while (head  !=  NULL)
 {
  tmp 
=  head;
  head 
=  head -> next;
  free(tmp);
 }
}

int  main()
{
 
struct  link  *  head  =  create_link( 6 );
 
struct  link  *  tmp ;
 
 output_link(head);
 tmp 
=  revert_link(head);
 output_link(tmp);
 del_link(head);
 
return   0 ;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值