第一种方法:转换指针方向

即:将一个已经创建好的单链表进行指针域的改变

今天突然被问到单链表逆序的问题,弄了好久才看出别人的程序有啥问题,就重新写了一遍。

今天才在CSDN客户端上看到美团的面试题是冒泡排序。

一个看似简单的问题难倒很多人,所以简单的不要因为他简单就忽视它,人们在简单的问题上越容易犯错!!!!

#include <stdio.h>
#include <stdlib.h>
typedef struct link_node
{int info;struct link_node *next;
}N;N *init()
{return NULL;
}N *creat(N *head)
{N *p,*q;int x;scanf("%d",&x);while(x!=-1){p=(N*)malloc(sizeof(N));p->info=x;p->next=NULL;if(!head){head=p;q=p;}else{q->next=p;q=p;}scanf("%d",&x);}return head;
}void display(N *head)
{N *p=head;if(head==NULL){printf("dispaly  none\n");return ;}while(p){printf("%5d",p->info);p=p->next;}printf("\n");
}int length(N *head)
{N *p=head;int count=0;while(p){count++;p=p->next;}return count;
}N *exchange(N *head)
{N *p=head,*q,*r;if(!head){printf("exchange  none\n");return head;}if(head && !head->next){return head;}q=p->next;r=q->next;p->next=NULL;while(r){q->next=p;p=q;q=r;r=r->next;}q->next=p;head=q;return head;
}int main ()
{N *head;int count=0;head=init();head=creat(head);display(head);head = exchange(head);display(head);return 0;
}

第二种方法:双向链表

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef struct node
{int data;struct node *rlink,*llink;
}N;N *p,*front=NULL,*q,*rear=NULL;void creat()
{int x;scanf("%d",&x);while(x!=-1){p=(N*)malloc(sizeof(N));p->data=x;if(front==NULL){p->llink=NULL;front=p;q=p;}else{p->llink=q;q->rlink=p;q=p;}p->rlink=NULL;scanf("%d",&x);if(x==-1){rear=q;}}return ;
}void print()
{p=front;q=rear;printf("正序输出:");while(p){printf("%d ",p->data);p=p->rlink;}printf("\n逆序输出:");while(q){printf("%d ",q->data);q=q->llink;}printf("\n");return ;
}int main ()
{creat();print();return 0;
}

【数据结构】单链表的逆序输出(两种方法)相关推荐

  1. 55-将单链表原地逆置(三种方法)

    方法1:用三个指针实现单链表(有头结点)的逆置 void Reverse(HeadList *head) {if(head==NULL||head->next==NULL||head->n ...

  2. 透彻理解回文~单链表的逆序~

    判断一个单链表是不是回文,主要有三种方法,不过如果要考虑空间复杂度的话,就只有常用的一种方法了. 这种方法很考验一个人的细心以及编程能力~ 前两种方法比较简单我就不祥述了~ 主要讲一下最后一种方法:直 ...

  3. 单链表实现一元多项式相加_python面试系列 01如何实现单链表的逆序

    题目介绍 来源:腾讯笔试                         难度系数:★★★☆☆                  考察频率:★★★★☆ 题目描述: 给定一个带头结点的单链表,请将其逆序 ...

  4. 单链表的逆序java_java 实现单链表的逆序

    package com.ckw.mianshi; /** * java 实现单链表的逆序 * @author Administrator * */ public class SingleLinkedR ...

  5. python列表list元素降序排列两种方法

    python列表list元素降序排列的两种方法 sort()方法 python列表内置了一个sort()方法,可以用于为元素列表进行排序,当将默认参数reverse设置为True,sort()方法将为 ...

  6. c语言实现链表的逆序输出,C语言数据结构实现链表逆序并输出

    C语言数据结构实现链表逆序并输出 将一个链表逆序并输出.我用了两种方法来实现,第一种是借助了一个新的空链表:第二种是在原来链表的基础上直接实现逆序. 实例代码: 头文件: #include #incl ...

  7. C语言单向链表的逆序输出

    最近在学习链表,看到书上说可以采取每次在链表头部插入新增节点的方法,将链表逆序,也就是建立的链表节点内容与数据的输入顺序相反.我便来了兴趣,想着试试看,结果没搞懂,于是开始百度.看了几遍博客后终于是明 ...

  8. C语言实现链表的逆序的几种方式

    文章目录 通过头插法实现的 通过双指针实现链表的逆序 通过栈来实现的 通过递归来实现 通过头插法实现的 1.通过头插法(两条链表)来实现的.通过遍历原来的链表,将遍历得到的每一个节点都插入到新链表的头 ...

  9. 字符串逆序的几种方法

    普通逆序 char* Reverse(char* s) {//将q指向字符串最后一个字符char* q = s ;while( *q++ ) ;q -= 2 ; //分配空间,存储逆序后的字符串.ch ...

最新文章

  1. 移植 thttpd Web服务器
  2. 124第七章—逻辑卷简介及在图形界面进行管理配置
  3. jQuery 通用表单方法
  4. Android 四大组件之——Acitivity(一)
  5. 如果机房的线路老化了要怎么做才对?
  6. c语言简单的模拟坐标,C语言模拟实现简单扫雷游戏
  7. 于敦德:途牛五大战略纵深不惧同质化竞争
  8. 程序员面试金典 - 面试题 16.22. 兰顿蚂蚁(deque模拟)
  9. word2vector数据集样式_这样做数据可视化驾驶舱,高端大气,一目了然,领导不点赞都难...
  10. bootstap-水果节案例-编辑中
  11. shell编程入门步步高(七、流程控制)
  12. 最近一段时间网上有一些报道称35岁以后只有两种人可以幸福的老去
  13. keil用c语言编程怎么打开,用keil软件新建,关闭,打开一个完整工程的操作流程...
  14. iweboffice之word——自定义菜单的使用
  15. 多组两两比较用什么检验方法_SPSS教程:多个组比较(Fisher精确检验)及组间两两比较...
  16. android模拟器 vm版,怎样用vmware虚拟机安装android模拟器
  17. 基于MATLAB综合特征的图像检索系统
  18. 扫盲:回囙囜囝回囟因囡団囤囥囦囧囨囩囱囫…(认识吗?)
  19. 跟着bob学win10 ump 学习笔记: lesson57 Weather
  20. 产品学习--产品经理三大文档--BRD、MRD、PRD

热门文章

  1. (C++)输入输出字符矩阵(二维字符数组)的三种方法
  2. ui设计师要养成哪些职场习惯呢?
  3. UI设计培训技术分享:搞定萌萌哒可爱图标
  4. 学习ui设计的流程是什么
  5. java I/O之装饰者模式
  6. vue-music 音乐网站
  7. Effective java 43返回零长度的数组或者集合而不是null
  8. 报错 org.springframework.beans.factory.BeanCreationException
  9. spring配置文件详解【总结】
  10. 什么是 prelink