Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm nút cuối cùng thứ hai của danh sách được liên kết trong một đường dẫn trong C ++

Bây giờ chúng ta sẽ xem cách lấy phần tử cuối cùng thứ hai trong danh sách liên kết. Giả sử có ít phần tử như [10, 52, 41, 32, 69, 58, 41], phần tử cuối cùng thứ hai là 58.

Để giải quyết vấn đề này, chúng tôi sẽ sử dụng hai con trỏ, một con trỏ sẽ trỏ đến nút hiện tại và con trỏ khác sẽ trỏ đến nút trước đó của vị trí hiện tại, sau đó chúng tôi sẽ di chuyển cho đến khi nút tiếp theo của hiện tại là rỗng, sau đó chỉ cần quay lại nút trước đó.

Ví dụ

#include<iostream>
using namespace std;
class Node {
   public:
      int data;
      Node *next;
};
void prepend(Node** start, int new_data) {
   Node* new_node = new Node;
   new_node->data = new_data;
   new_node->next = NULL;
   if ((*start) != NULL){
      new_node->next = (*start);
      *start = new_node;
   }
   (*start) = new_node;
}
int secondLastElement(Node *start) {
   Node *curr = start, *prev = NULL;
   while(curr->next != NULL){
      prev = curr;
      curr = curr->next;
   }
   return prev->data;
}
int main() {
   Node* start = NULL;
   prepend(&start, 15);
   prepend(&start, 20);
   prepend(&start, 10);
   prepend(&start, 9);
   prepend(&start, 7);
   prepend(&start, 17);
   cout << "Second last element is: " << secondLastElement(start);
}

Đầu ra

Second last element is: 20