`
chriszeng87
  • 浏览: 741021 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

单链表原地逆置递归与非递归解法

阅读更多
#include <stdio.h>

typedef struct LinkNode
{
	int data;
	struct LinkNode *next;
} Node;

//非递归解法
Node* reverse1(Node* header) {
	Node* p = header->next;
	header->next = NULL;
	Node* q = p->next;
	while(q) {
		p->next = header;
		header = p;
		p = q;
		q = p->next;
	}

	p->next = header;
	header = p;
	return header;
}

//递归解法
Node* reverse2(Node* header) {
	if(header == 0 || header->next == 0)
		return header;

	Node* p = header->next;
	Node* q = reverse2(p);
	p->next = header;
	header->next = 0;
	return q;
}

int main() {
	Node h = {1, 0};
	Node* head = &h;
	Node node1 = {3, 0};
	Node node2 = {2, 0};
	Node node3 = {4, 0};
	Node node4 = {7, 0};
	Node node5 = {6, 0};
	Node node6 = {5, 0};

	head->next = &node1;
	node1.next = &node2;
	node2.next = &node3;
	node3.next = &node4;
	node4.next = &node5;
	node5.next = &node6;
	node6.next = NULL;

	Node* p = reverse2(head);
	while(p) {
		printf("p->data = %d\n", p->data);
		p = p->next;
	}

	return 0;
}
0
0
分享到:
评论

相关推荐

    单链表的原地逆置

    ### 单链表原地逆置的概念 单链表是一种常见的线性数据结构,其中每个元素包含一个指向其后继元素的指针。对于单链表的原地逆置操作,指的是不借助额外的数据结构来创建新的链表,而是在原有的链表基础上通过修改...

    数据结构C语言版之单链表的逆置.cpp

    数据结构老师布置的作业,运用课本代码,较为基础经典,适合大学本科在上数据结构这门课的同学参考,简单易懂,关于单链表的逆置问题

    单链表就地逆置的方法

    ### 单链表就地逆置的方法 #### 知识点概述 在计算机科学与数据结构领域中,链表是一种常见的线性数据结构,由一系列节点组成,每个节点包含一个数据元素以及指向下一个节点的指针。对于单链表而言,每个节点只有...

    单链表的逆置

    单链表的逆置,就是将单链表按相反的方向存放,使指针的方向发生变化。这里建立了相关的函数,并包含主函数

    c++代码实现单链表逆置输出

    c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出c++代码实现单链表逆置输出...

    实现单链表就地逆置且不分配新的空间

    单链表就地逆置的算法通常涉及三个指针:前驱指针(prev)、当前指针(curr)和临时指针(temp)。以下是一种常见的实现方法: 1. 初始化前驱指针prev为null,当前指针curr为链表头节点。 2. 遍历链表,对于每个...

    单链表的逆置 代码

    ### 单链表逆置知识点解析 #### 一、单链表基础知识 1. **定义**:单链表是一种线性表的数据结构,其每个元素包含一个存储数据的字段(称为节点的数据部分)和一个指向下一个元素的链接(称为节点的指针部分)。...

    单链表的就地逆置 数据结构

    逆置单链表是指将链表中的元素顺序反转,原本的头节点变为尾节点,原本的尾节点变为头节点。就地逆置意味着在不使用额外空间的情况下完成这一操作,只用到链表本身。 首先,我们来深入理解单链表的结构。定义一个...

    单链表逆置c语言数据结构.cpp

    输入多个整数,以-1作为结束标志,顺序建立一个带头结点的单链表,之后对该单链表的数据进行逆置,并输出逆置后的单链表数据。 Input 输入多个整数,以-1作为结束标志。 Output 输出逆置后的单链表数据。 ...

    单链表逆置算法详解

    ### 单链表逆置算法详解 #### 一、引言 在计算机科学中,链表是一种常用的数据结构,它由一系列节点组成,每个节点包含数据域和指向下一个节点的指针。单链表是最简单的一种链表形式,其中每个节点只包含一个指向其...

    单链表的就地逆置与删除

    单链表操作就地逆置删除mink到maxk之间的元素#include&lt;stdio.h&gt;

    单链表的逆置(c语言)

    单链表的逆置

    单链表的逆置代码实现.txt

    单链表的逆置

    python实现单链表的逆置.md

    单链表的逆置

    单链表的逆置的概要介绍与分析

    ### 单链表逆置概要介绍与深入分析 #### 一、理论描述与基本概念 单链表逆置作为数据结构领域中的一个重要且经典的课题,不仅在学术研究中有广泛的应用,在实际软件开发中也同样重要。它涉及的核心操作是对单链表...

Global site tag (gtag.js) - Google Analytics