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

单向链表翻转

    博客分类:
  • c
阅读更多
临时笔记,创建一个链表
#include <stdlib.h>
#include <stdio.h>
typedef struct node* link;
struct node {int item;link next;};
int main(int argc,char * argv[]){
    int i,N=atoi(argv[1]);
    link t =malloc(sizeof *t),x=t;
    t->item=1;t->next=t;
    for(i=2;i<=N;i++){
        x=(x->next=malloc(sizeof *x));
        x->item=i;x->next=t;
    }   
    x=t;
//  for(i=1;i<=N;i++){
    while(x->next!=t){
        printf("%d\n",x->item);
        x=x->next;
    }
}
~    


单向链表翻转
#include <stdlib.h>
#include <stdio.h>
typedef struct node* link;
struct node {int item;link next;};
int main(int argc,char * argv[]){
    int i,N=atoi(argv[1]);
    struct node *t ,*x;
    t=malloc(sizeof *t),x=t;
    t->item=1;t->next=t;
    for(i=2;i<=N;i++){
        x=(x->next=malloc(sizeof *x));
        x->item=i;x->next=t;
    }   
    x=t;
    for(i=1;i<=N;i++){
        printf("%d\n",x->item);
        x=x->next;
    }
//---------翻转开始--主要是temp节点存住了要变化的节点
    struct node *s,*temp;
    s=t;
    for(i=1;i<=N;i++){
        temp=s;
        s=s->next;
        temp->next=t;
        t=temp;
    }
//---------翻转结束
    x=t;
    for(i=1;i<=N;i++){
        printf("%d\n",x->item);
        x=x->next;
    }
} 
分享到:
评论

相关推荐

    C#单向链表的实现

    本文将详细讲解如何在C#中实现单向链表,结合源码解析来帮助你深入理解其内部机制。 首先,我们要知道什么是单向链表。单向链表是由一系列节点组成,每个节点包含两个部分:数据域和指针域。数据域存储实际的数据,...

    单向链表多种功能实现

    在本文中,我们将深入探讨如何实现单向链表的各种操作,包括建立链表、添加元素、删除元素、翻转链表(包括递归方法)、合并链表、查找链表中的回路以及定位回路的起点。 1. **建立链表** 建立链表通常从创建一个...

    逆转单向链表(有7种方法)

    单向链表是一种常见的数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在编程中,经常需要对链表进行各种操作,其中之一就是逆转链表。逆转链表的操作可以改变链表中节点的顺序,使得原本的...

    面试单链表问题总结-反转,逆序输出,判环,求交点

    一种方法是先分别遍历两个链表,记录各自的长度,然后从较长链表的头节点开始,按照长度差向后移动,直到与较短链表的某个节点相遇,那个节点即是交点。另一种方法是使用双指针,让一个指针从头节点开始,另一个指针...

    链表倒序__实现单向链表倒序

    单向链表是最简单的链表类型,其特点是每个节点只能向前遍历,不能向后。在某些情况下,我们需要对链表进行倒序操作,即将链表的顺序反转,例如将A-&gt;B-&gt;C转换为C-&gt;B-&gt;A。这个过程是Intel面试中常见的一个问题,旨在...

    如何使用递归和非递归方式反转单向链表

    单向链表是一种基本的数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的引用。在某些情况下,我们可能需要反转链表,即将链表的前后顺序颠倒。本篇文章将详细介绍如何使用递归和非递归两种方法来实现...

    LeetCode-[链表]-翻转链表

    翻转链表需要注意的一点是:链表之间靠指针连接,如果贸然将某个节点的next指向其他节点,就有可能造成该节点的丢失,所以翻转链表时(单向或双向),都要注意保存它的周围环境。 时间复杂度:O(n) 空间复杂度:O(1)...

    C实现的链表,集合,映射

    链表分为单向链表和双向链表,前者只能向前遍历,而后者可以向前或向后遍历。在C语言中,实现链表通常涉及定义结构体来表示节点,并提供插入、删除、遍历等操作的函数。 接着,集合(Set)是一种不包含重复元素的...

    C语言 数据结构之单链表基本操作

    单链表的各种操作,适合于初学,也适合于复习 单链表操作介绍 1. 创建头节点 ...12. 面试中常见:单链表翻转 13. 已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序,要求用递归方法

    数据结构与算法笔记(三)线性表 定义线性表节点的结构.pdf

    1. 单向链表:每个节点只有一个指针,即指向其后继节点,不能向前查找。 2. 循环链表:最后一个节点的指针返回指向第一个节点,形成一个循环。 3. 双向链表:每个节点有两个指针,分别指向前后两个节点,可以双向...

    【手绘漫画】图解LeetCode之反转链表(LeetCode206题)

    - **类型**:链表分为单向链表、双向链表和循环链表等。 - **特性**: - 动态存储分配,灵活高效。 - 插入、删除操作简单快速。 - 存储空间不连续,不适合随机访问。 #### 知识点二:单向链表反转原理 - **反转...

    leetcode530-leetcode:leetcode

    翻转单向链表 237 删除链表元素 203 删除链表多个元素 206 翻转链表 141 环形链表 2021-05-15: 876 获取链表中间节点 20 判断括号是否成对 2021-05-16: 150后缀表达式 224基本计算器 856计算括号分数 232 用栈实现...

    数据结构与算法 全 数据结构与算法全 Java

    1) **反转单向链表**:实现反转单向链表的算法。 2) **根据值删除节点**:在链表中删除具有特定值的所有节点。 3) **删除倒数节点**:删除链表中的倒数第N个节点。 4) **有序链表去重**:删除链表中的重复元素。 5) ...

    自己整理的C/C++笔试、面试题(完整)

    对于链表翻转的问题,题目给出了正确答案,这是通过交换当前节点与其后继节点的链接来实现的。这个算法在链表的每个节点上迭代,直到达到尾部,最后将头指针更新为原来的尾节点。 最后,关于JavaScript的题目,删除...

    leetcode147-algorithm:leetcode

    单向链表结构定义如下: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 1、翻转链表 递归解法 设置递归函数的返回值为翻转后链表的首节点 递归终止条件为空节点或节点...

    LeetCode判断字符串是否循环-leetcode:leetcode练习

    单向链表中涉及链表中两个节点需要相互比较的场景 单项链表指针修改(翻转,两侧插入等涉及多点指针修改场景) 常见题目 找到链表的中间节点-快慢指针 翻转链表-pre,op, post多指针 dummy node/哨兵节点 使用场景 ...

    腾讯校园招聘笔试题技术类C语言.pdf

    8. **判断单向链表是否有环**: - 使用快慢指针(Floyd算法),快指针每次移动两个节点,慢指针每次移动一个节点。如果存在环,快指针最终会追上慢指针;若不存在环,快指针会先到达链表尾部。 9. **判断字符串...

    数据结构课程设计报告—纸牌游戏.pdf

    该设计旨在解决约瑟夫环问题,即使用单向循环链表来模拟约瑟夫环的过程,输出各个人的编号。该设计使用了一个链表来存储每个人的编号和密码,并使用循环来实现约瑟夫环的过程。 该设计的主要功能是提供用户从键盘...

Global site tag (gtag.js) - Google Analytics