C语言——实现单链表的逆置操作

问题:实现单链表的逆置操作

解答:

#include<stdio.h>

typedef struct dNode{

   

 int ch;

 struct dNode *next;

   

   

}dNode;

dNode* change(dNode* chain)

{

    //如果数目不够直接返回

    if(chain==NULL || chain->next==NULL)

      return chain;

   

    dNode* temp,* pre;

   

    while(chain)

    {

        //保存前一个结点

        temp=chain;

        chain=chain->next;

         

        //用前一个结点与后一个结点互换,反转

        temp->next=pre;

       

        //移动指针

        pre=temp;

       

    }

   

    return temp;

   

}

int main()

{

    dNode *first,*end,*create;

    char c;

   

    for(int i=0;i<5;i++)

    {

        //设置节点,分配内存空间

        create=(dNode*)malloc(sizeof(dNode));

       

        create->ch = i;

       

        //首节点与尾节点初始化

        if(first==NULL){

           

            first=create;

            end=create;

           

        }

        else{

            //尾节点设置

            end->next=create;

            end=create;

        }

    }

   

    end->next=NULL;

   

   

    //输出逆序前的结果

    dNode* p=first;

    while(p)

    {

        printf("%d   ", p->ch);

        p = p->next;

    }  

   

    //进行逆序变换       

    dNode* ccg=change(first);

   

    printf("\n\n");

   

    //输出逆序后的结果

    for(dNode* p=ccg;p;p=p->next)

       printf("%d   ",p->ch);

   

}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值