数据结构实验之链表三:链表的逆置

本文介绍了一种链表逆置的实现方法,通过使用两个移动指针p和q,在不创建新链表的情况下完成逆置操作。代码示例中详细展示了如何读取输入并构建链表,再进行逆置处理,最后输出逆置后的链表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

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

struct node
{
    int data;
    struct node *next;
};
struct node *h,*p,*t;
int main()
{
    h=(struct node *)malloc(sizeof(struct node));
    h->next=NULL;
    t=h;
    int a;
    while(scanf("%d",&a)&&a!=-1)
    {
        p=(struct node *)malloc(sizeof(struct node));
        p->data=a;
        p->next=NULL;
        t->next=p;
        t=p;
    }
    struct node *q;
    p=h->next;
    q=p->next;
    h->next=NULL;
    while(p)
    {
        p->next=h->next;
        h->next=p;
        p=q;
        if(q)
            q=q->next;
    }
    p=h->next;
    while(p->next)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("%d",p->data);
    return 0;
}

只是进行了逆置,基于原来的链表变化,没有产生新链表!逆置过程中用了两个移动指针p,q

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值