链表反转C实现(递归与循环)
//逆转链表http://blog.163.com/lichunliang1988116@126/blog/static/26599443201282083655446/
#include<iostream.h>
#include<stdlib.h>
typedef struct Node
{
int data;
Node *next;
}*Linklist,ListNode;
void initLink(Linklist *head)
{ Node *node=(Node *)malloc(sizeof(Node));
node->data=;
node->next=NULL; head=&node; } void addNode(Linklist head,int no) {
Node *node=(Node *)malloc(sizeof(Node));
node->data=no;
node->next=NULL;
cout<<"加个数据为"<<no<<endl;
node->next=head->next;
head->next=node;
} void print(Linklist head)
{
Linklist current=head;
while(current!=NULL)
{
cout<<current->data<<" ";
current=current->next; }
cout<<endl; }
//recursive fanhui head function
Linklist recursive2(Linklist head,Linklist &newHead)
{
if(head->next==NULL)
{
newHead=head;
return head; }
Node *p1=head;
Node *p2; p2=recursive2(p1->next,newHead); p2->next=p1;
p1->next=NULL; } Linklist reverse1(Linklist head)
{
//if linklist is a node or null ,we need not inverse the linklist
if(head==NULL||head->next==NULL)
{
return head;
} Linklist pre=head;
Node *current=head->next;
Linklist next1=current->next;
//notice that head->next should be null;
head->next=NULL; while(next1!=NULL)
{
current->next=pre;
pre=current; current=next1; next1=next1->next; } current->next=pre; return current; } void main()
{
cout<<"你好"<<endl;
Linklist h=NULL;
h=(Node *)malloc(sizeof(Node));
h->data=;
h->next=NULL; addNode(h,);
addNode(h,);
addNode(h,);
cout<<"反转前"<<endl;
print(h);
h=reverse1(h);
print(h);
cout<<"revese again"<<endl;
recursive2(h,h);
print(h); }
链表反转C实现(递归与循环)的更多相关文章
- java_链表反转
定义一个Node节点类 1 public class Node { 2 public int value; 3 public Node next; 4 5 public Node(int value) ...
- 经典算法(三) 单链表 反转 & 是否相交/成环 & 求交点 等
参考文章: 判断链表是否相交:http://treemanfm.iteye.com/blog/2044196 一.单链表反转 链表节点 public class Node { private int ...
- LeetCode 206——链表反转(JAVA)
题目: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可 ...
- 单链表反转的原理和python代码实现
链表是一种基础的数据结构,也是算法学习的重中之重.其中单链表反转是一个经常会被考察到的知识点. 单链表反转是将一个给定顺序的单链表通过算法转为逆序排列,尽管听起来很简单,但要通过算法实现也并不是非常容 ...
- 剑指offer—单链表反转的三种实现方法
单链表的反转可以用递归.非递归和栈的方法实现 链表节点定义: struct ListNode{ int val; Node* next; ListNode(int x):val(x),next(nul ...
- Java单链表反转图文详解
Java单链表反转图文详解 最近在回顾链表反转问题中,突然有一些新的发现和收获,特此整理一下,与大家分享 背景回顾 单链表的存储结构如图: 数据域存放数据元素,指针域存放后继结点地址 我们以一条 N1 ...
- 2、java数据结构和算法:单链表: 反转,逆序打印, 合并二个有序链表,获取倒数第n个节点, 链表的有序插入
什么也不说, 直接上代码: 功能点有: 1, 获取尾结点 2, 添加(添加节点到链表的最后面) 3, 添加(根据节点的no(排名)的大小, 有序添加) 4, 单向链表的 遍历 5, 链表的长度 6, ...
- 链表反转leetcode206
最近准备结束自己的科研生涯,准备要开始找工作了,准备在LEETCODE刷刷题...刷的前40题全部用python刷的,各种调包速度奇快,后被师哥告知这样没意义,于是准备开始回归C++,Python用的 ...
- 链表反转 (Multi-method)
链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分.解决这一问题有多种方法,在面试中面试官通常也会要求写出多种.包括sta ...
- java实现单链表反转
一.简介 经查阅,主要有两种方法实现链表反转,递归反转法和遍历反转法: 递归: 在反转当前结点之前先反转其后边的结点,即.从尾结点开始逆向反转各个节点的指针域指向: 遍历:从前往后反转各个结点的指针域 ...
随机推荐
- 使用curl获取网站的http的状态码
发布:thebaby 来源:net [大 中 小] 本文分享一例shell脚本,一个使用curl命令获取网站的httpd状态码的例子,有需要的朋友参考下.本文转自:http://www.j ...
- 如何读懂Oracle文档中的语法图(转)
本文转载自:http://kyle.xlau.org/posts/syntax-diagrams.html Oracle文档中用到了两种表达语法的方法,语法图和BNF. BNF, Backus-Nau ...
- 如何配置SSH Keys登录
SSH Keys简介: 使用SSH Keys的登录远程虚拟云主机的方式比单独使用密码登录更加安全,简单的密码很可能被暴力破解.而目前来看采用长度大于1024位的RSA加密算法,几乎是不可能被破解的.S ...
- final, finally, finalize的区别
1.final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承. 内部类要访问局部变量,局部变量必须定义成final类型 2.finally是异常处理语句结构的一部分,表示总是执 ...
- 3224: Tyvj 1728 普通平衡树
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作: 1. 插入x数 2. 删除x数(若有多个相同的数,因只删除一个) 3. 查询x数的排名(若有多个相 ...
- Python中替换元素
假设现在班里仍然是3名同学: >>> L = ['Adam', 'Lisa', 'Bart'] 现在,Bart同学要转学走了,碰巧来了一个Paul同学,要更新班级成员名单,我们可以先 ...
- FireMonkey vs. VCL (FMX的UI更灵活,图形效果更强,硬件加速,内嵌3D,使用浮点数更精确,跨平台,可使用Mida converter转换和TFireMonkeyContainer内嵌)
Frequently when I am talking about the VCL or FireMonkey I get some of these common questions: Is VC ...
- 学习笔记-[Maven实战]-第二章:Maven安装和配置
在windows上安装Maven 1.检查JDK安装:在CMD下运行以下命令来检查JAVA安装情况: 命令: C:\Documents and Settings\Administrator>ec ...
- 【HDOJ】1045 Fire Net
经典深搜.注意满足条件. #include <stdio.h> #include <string.h> #define MAXNUM 5 char map[MAXNUM][MA ...
- access to modified closure 闭包的问题
; i < listBoxDevices.Items.Count; i++) { var tempDeviceId = listBoxDevices.Items[i].ToString(); i ...