21xrx.com
2024-12-22 21:13:20 Sunday
登录
文章检索 我的文章 写文章
C++链表逆序输出
2023-07-04 18:57:45 深夜i     --     --
C++ 链表 逆序输出

C++链表是一种常用的数据结构,它可以用来存储一系列的数据。在实际开发中,经常需要对链表进行逆序操作,即将链表反转,从而实现逆序输出链表中的元素。本篇文章将介绍如何使用C++来实现链表逆序输出的功能。

首先需要定义一个链表结构体,包含两个成员变量:一个指向下一个节点的指针和一个存储当前节点数值的变量。定义完链表结构体之后,我们需要实现向链表中添加元素的函数,每当添加一个元素时,需要将它加入链表的末尾。

随着链表中元素的不断增加,我们需要确保链表中的数据是按照添加的顺序进行存储的。因此,我们需要尾插法来添加元素到链表中。

接下来,我们需要实现逆序输出链表元素的功能。实现的方法是先遍历链表,将链表中的元素逐个取出来,然后将它们放入一个栈中。在把它们从栈中取出来时,就可以实现逆序输出的功能。

具体实现过程如下所示:


#include<iostream>

#include<stack>

using namespace std;

struct ListNode{

  int val;

  ListNode* next;

  ListNode(int x):val(x),next(NULL){}

};

ListNode* createList(int a[], int n) {

  if (n <= 0)

    return NULL;

  

  ListNode* head = new ListNode(a[0]);

  ListNode* q = head;

  for (int i = 1; i < n; i++) {

    q->next = new ListNode(a[i]);

    q = q->next;

  }

  return head;

}

void printList(ListNode* head) {

  while (head)

    cout << head->val << " ";

    head = head->next;

  

  cout << endl;

}

void reverseList(ListNode* head) {

  stack<ListNode*> s;

  ListNode* p = head;

  while (p) {

    s.push(p);

    p = p->next;

  }

  while (!s.empty()) {

    p = s.top();

    s.pop();

    cout << p->val << " ";

  }

}

int main(){

  int a[4] = 3;

  ListNode* head = createList(a, 4);

  printList(head);

  reverseList(head);

  return 0;

}

在上述代码中,createList函数用于创建链表。printList函数用于输出链表,reverseList函数则用于实现链表逆序输出。在main函数中,我们创建了一个包含4个元素的链表,并将其逆序输出。执行代码后,可以得到以下结果:


1 3 5 7

7 5 3 1

可以看到,链表中的4个元素已经按照相反的顺序输出。在实际开发中,链表逆序输出的操作十分常见,它可以用于解决很多问题,如颠倒字符串中的单词、排列组合等。因此,熟练掌握这种数据结构操作是十分有必要的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复