qq_31419033 2015-09-29 05:03 采纳率: 100%
浏览 2350
已采纳

C语言中单向的链表反转

node* reverse1(node * head)
{
node*p,*q,*r;
p = head;

q = head->next;

head->next = NULL;
while(q){

r = q->next;

q->next = p;

p = q;

q = r;
}

head=p;
/* while(p)
{
printf("%d ",p->num);
p=p->next;
}*/
printf("\n");
return head;

}

  • 写回答

2条回答 默认 最新

  • qq1223386926 2015-09-29 05:33
    关注
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct _node
    {
            int data;
            struct _node *next;
    } node;
    
    node*
    reverse1(node * head)
    {
            node*p,*q,*r;
    
            if( head != NULL )
            {
                    p = head;
                    q = head->next;
    
                    head->next = NULL;
                    while(q){
                            r = q->next;
                            q->next = p;
    
                            p = q;
                            q = r;
                    }
    
                    head=p;
            }
            return head;
    }
    
    int
    main( void )
    {
            node *link = NULL;
            node *tmp = NULL;
            int i = 0;
    
            for( i = 0; i < 5; i++ )
            {
                    tmp = malloc( sizeof( node ) );
                    if( tmp == NULL )
                            return -1;
    
                    tmp->data = i;
                    tmp->next = link;
                    link = tmp;
            }
    
            tmp = link;
            printf( "before reversal:\n" );
            while( tmp )
            {
                    printf( "%d ", tmp->data );
                    tmp = tmp->next;
            }
            putchar( '\n' );
    
            link = reverse1( link );
            printf( "after reversal:\n" );
            tmp = link;
            while( tmp )
            {
                    printf( "%d ", tmp->data );
                    tmp = tmp->next;
            }
            putchar( '\n' );
    
            return 0;
    }
    
    测了一下,应该可以使吧
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?