链表-遍历链表

作者: 茶还是咖啡 | 来源:发表于2020-03-05 08:13 被阅读0次

正向遍历链表

正向遍历链表相对简单,即,输出当前节点的值,然后指针指向下一个节点,然后继续输出这个节点的值,以此类推。

code

void printLinkList(ElemSN *head){
    if(head==NULL){
        return;
    }
    while(head!=NULL){
        printf("%5d",head->data);
        head = head->next;
    }
}
// 递归实现
void printLinkList1(ElemSN * head){
    if(head==NULL){
        return;
    }
    printf("%5d,",head->data);
    printLinkList1(head->next);
}

逆向遍历链表

  1. 可是使用递归的方式,通过不断的进栈的形式,打印链表,但是如果链表的长度非常长,可能出现栈溢出的问题。
void printLinkList2(ElemSN *head){
    if(head!=NULL){
        printLinkList2(head->next);
        printf("%5d",head->data);
    }
}
  1. 除了使用递归的形式,我们可以借助数组,正向遍历链表,依次将链表中的节点存储到数组中,然后逆向遍历数组就可以。但是使用这种形式就是需要使用额外的空间,而且时间复杂度也会增加。
void printLinkList3(ElemSN *head){
    if(head==NULL){
        return;
    }
    int data[1000];
    int index=0;
    while (head) {
        data[index++] = head->data;
        head = head->next;
    }
    while (index) {
        printf("%5d",data[--index]);
    }
}

相关文章

  • python定义链表数据结构

    结果: 4开始遍历此链表15141312链表遍历已经结束None开始遍历此链表15141111312链表遍历已经结...

  • DFS与BFS

    以先序遍历打印链表为例: 以中序遍历打印链表为例: 以后序遍历打印链表为例: 以层序遍历打印链表为例:

  • js+链表

    链表结构 删除链表某节点 遍历 反转单链表

  • 二、链表遍历框架

    很多链表题目都可以归结为链表的遍历,以及在遍历中做反转、插入和删除操作,因此可以使用链表遍历的框架来解题。链表遍历...

  • 1链表相关操作

    1.创建带头节点的链表,并且遍历输出。 题目 2.插入新链表,保持顺序,并遍历输出链表。 3.插入新的链表,并遍历...

  • 数据结构-4、数据结构系列之如何查找单链表中倒数第N个节点

    给定一个单链表,查找链表中倒数第n个节点 穷举遍历(两次遍历) 先遍历一遍链表,确定链表中节点的个数length。...

  • 2018-03-19 循环链表

    为什么要用循环链表,因为查找遍历如果不从头结点开始的话,那么就无法遍历整个链表 循环链表:注意观察循环链表的结构 ...

  • 从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值。 栈实现 要解决这个问题,肯定要遍历链表,从头到尾遍历链表,...

  • 用链表实现栈(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

  • 用链表实现队列(go版本)

    //文件遍历//轻量级 数组栈 深度遍历 数组队列,广度遍历//重量级 链表栈 深度遍历 链表队列,广度遍历

网友评论

    本文标题:链表-遍历链表

    本文链接:https://www.haomeiwen.com/subject/psethhtx.html