6-5 带头结点的单链表就地逆置

本题要求实现一个函数,对带有头结点的单链表进行就地逆置。

函数接口定义:

 

void reverse ( LinkList L );

L是带头结点的单链表的头指针。

裁判测试程序样例:

 

#include <stdio.h> #include <stdlib.h> typedef int ElemType; typedef struct LNode { ElemType data; struct LNode *next; }LNode,*LinkList; LinkList Create(); void print(LinkList L); void reverse ( LinkList L); int main() { LinkList L = Create(); print(L); printf("\n"); reverse(L); print(L); return 0; } LinkList Create() { LinkList L,p,s; ElemType e; L = (LinkList)malloc(sizeof(LNode)); p=L; scanf("%d",&e); while(e!=-1) { s = (LinkList)malloc(sizeof(LNode)); s->data=e; p->next = s; p=s; scanf("%d",&e); } p->next=NULL; return L; } void print(LinkList L) { LinkList p; p=L->next; while (p) { printf("%d ", p->data); p =p->next; } } /* 请在这里填写答案 */

输入样例:

1 2 3 4 5 6 -1

输出样例:

1 2 3 4 5 6 
6 5 4 3 2 1 

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

void reverse (LinkList L)
{
    LNode *prev=NULL;
    LNode *curr=L->next;
    LNode *next =NULL;
    while(curr!=NULL)
    {
        next=curr->next;//保存当前节点的下一个节点
        curr->next=prev;//将当前节点的next指针指向前一个节点
        prev=curr;//将prev移动到当前节点
        curr=next;//将curr移动到下一个节点
    }
    L->next=prev;链表新头节点的next指向逆置后的第一个结点

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值