Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชัน reverse() ของ forward_list ใน C++ STL

Forward List คืออะไร?

Forward list สามารถเข้าใจได้ว่าเป็น singly linked list (รายการเชื่อมโยงเดี่ยว) ที่สามารถติดตามได้เฉพาะทิศทางไปข้างหน้า (forward direction) ไม่สามารถย้อนกลับได้ (backward direction) ในขณะที่ list (doubly linked list) สามารถติดตามได้ทั้งสองทิศทาง เนื่องจากแต่ละองค์ประกอบมีลิงก์สองอัน: หนึ่งสำหรับองค์ประกอบถัดไป และอีกอันสำหรับองค์ประกอบก่อนหน้า Forward list จึงมีความเร็วสูงกว่า เนื่องจากต้องเก็บลิงก์เพียงอันเดียว (ไปข้างหน้า) การแทรกและลบข้อมูลใน forward list ใช้เวลาคงที่

forward_list::reverse() คืออะไร?

forward_list::reverse() เป็นฟังก์ชันใน C++ Standard Template Library (STL) ที่ใช้สำหรับ กลับลำดับขององค์ประกอบ ที่อยู่ใน forward list

ไวยากรณ์ (Syntax)

forwardlist_name.reverse()

พารามิเตอร์ (Parameter)

ฟังก์ชันนี้ไม่มีพารามิเตอร์

ค่าที่ส่งคืน (Return Value)

ฟังก์ชันนี้ไม่ส่งคืนค่า (void) ทำการกลับลำดับลิสต์โดยตรง (in-place)

ตัวอย่างการทำงาน

Input:  รายการองค์ประกอบ: 57 99 54 34 84
Output: องค์ประกอบหลังกลับลำดับ: 84 34 54 99 57

Input:  รายการองค์ประกอบ: 40 30 60 90 70
Output: องค์ประกอบหลังกลับลำดับ: 70 90 60 30 40

แนวทางการเขียนโปรแกรม

  1. กำหนดค่าเริ่มต้นให้ลิสต์
  2. พิมพ์ forward list ก่อนใช้ฟังก์ชัน reverse()
  3. เรียกใช้ฟังก์ชัน forward.reverse() ที่อยู่ในไฟล์หัวข้อของ C++
  4. แสดง forward list หลังกลับลำดับแล้ว

ตัวอย่างโค้ดที่แก้ไขแล้ว (โค้ดต้นฉบับมีข้อผิดพลาดมาก)

// C++ code to demonstrate the working of forward_list::reverse()
#include <forward_list>
#include <iostream>
using namespace std;

int main() {
    // กำหนดค่าเริ่มต้น forward list
    forward_list<int> forward = {10, 20, 30, 40, 50};
    cout << " รายการองค์ประกอบ: ";
    for (auto it = forward.begin(); it != forward.end(); ++it)
        cout << *it << " ";
    // เรียกใช้ฟังก์ชันที่ทำการกลับลำดับ
    forward.reverse();
    cout << "\n รายการหลังกลับลำดับ: ";
    for (auto it = forward.begin(); it != forward.end(); ++it)
        cout << *it << " ";
    return 0;
}

ผลลัพธ์ (Output)

รายการองค์ประกอบ: 10 20 30 40 50
รายการหลังกลับลำดับ: 50 40 30 20 10

แก้ไขข้อผิดพลาดจากโค้ดต้นฉบับ:

  • ใช้ #include <forward_list> และ #include <iostream> แทน .h แบบเก่า
  • ใช้ forward.begin() และ forward.end() แทน forward.start() (ไม่มีฟังก์ชัน start() ใน forward_list)
  • แก้ไขตัวพิมพ์ Using → using, Int → int
  • ลบอักขระพิเศษ “ ” ที่ไม่ใช่เครื่องหมายคำพูดมาตรฐาน