056.单链表就地逆置

简介: 056.单链表就地逆置
#include<stdio.h>
#include<stdlib.h>
#define NULL 0 /*宏定义*/
typedef struct node /*定义结点类型的数据结构*/
{
  char c; /*数据域,类型为字符型*/
  struct node *next; /*指针域,类型为本结构体类型*/
}Node,*L; /*类型重定义,即Node和*L和struct node等价*/
main()
{
  L l,p,q,r; /*用指针类型定义三个结点类型的指针*/
  char ch;
  l=(L)malloc(sizeof(Node)); /*分配内存空间*/
  l->c='\0'; /*为头结点的数据域赋值,值为空*/
  l->next=NULL; /*指明下一个结点目前不存在*/
  q=l; /*q为游动指针,链表结点的连结要用*/
  printf("Input a character:\n");
  scanf("%c",&ch);
  getchar();
  while(ch!='0') /*输入0表示输入结束*/
  {
    p=(L)malloc(sizeof(Node)); /*为新输入的数据分配内存空间*/
    p->c=ch;
    p->next=NULL; /*新输入的结点在链表的最后,即它的后面没有其它元素*/
    q->next=p; /*q用于将上一个元素链接至当前新元素*/
    q=p; /*q自己移到当前最后一个元素,以备继续链接所用*/
    scanf("%c",&ch);
    getchar();
  } 
  /*以上完成了单链表的创建*/
  q=l->next;
  p=q->next;
  r=p->next;
  q->next=NULL;
  while(r!=NULL)
  {
    p->next=q;
    q=p;
    p=r;
    if(r->next!=NULL) /*r后面还有结点,则逆置继续*/
      r=r->next;
    else
      break;
  }
  r->next=q;
  l->next=r; //头结点指向最后一个结点
  q=l; /*输入整个链表前,先将q移到链表头,l一般不动*/
  while(q->next!=NULL) /*若q所指向的元素后面还有其它元素,则将该元素的数据输出*/
  {
    printf("%c-->",q->next->c); /*q->next->c表示q所指向的下一个元素的数据*/
    q=q->next; /*完成该元素的输出后,q移至下一个元素重复输出操作*/
  }
  printf("\n");
}
相关文章
|
消息中间件 运维 Kubernetes
k8s容器云架构之dubbo微服务—K8S(15)监控实战-ELK收集K8S内应用日志
博客地址:https://www.cnblogs.com/sseban 哔哩哔哩:https://space.bilibili.com/394449264 K8S监控实战-ELK收集K8S内应用日志
914 0
|
弹性计算 Linux
ECS操作Linux初体验
记录一下Linux中一些常见目录
173 0
ECS操作Linux初体验
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
589 212
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
233 138
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
827 60