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

โปรแกรม C++ หาผลคูณของโหนดสุดท้าย N ตัวใน Linked List

พิจารณาว่าเรามีสมาชิกใน Linked List เราต้องหาผลคูณของ N โหนดสุดท้าย ค่า N กำหนดไว้ด้วย ถ้ารายการเป็น [5, 7, 3, 5, 6, 9] และ n = 3 ผลลัพธ์จะเป็น 5 * 6 * 9 = 270

กระบวนการตรงไปตรงมา เราอ่านสมาชิกปัจจุบันจากด้านซ้าย แล้วเพิ่มสมาชิกเข้า stack หลังเติม stack แล้ว นำ N สมาชิกออกและคูณกับ prod (เริ่มต้น prod เป็น 1) เมื่อครบ N สมาชิกก็หยุด

ตัวอย่าง

#include <iostream> 
#include <stack> 
using namespace std; 

class Node{ 
public: 
    int data; 
    Node *next; 
}; 

Node* getNode(int data){ 
    Node *newNode = new Node; 
    newNode->data = data; 
    newNode->next = NULL; 
    return newNode; 
} 

void append(struct Node** start, int key) { 
    Node* new_node = getNode(key); 
    Node *p = (*start); 
    if(p == NULL){ 
        (*start) = new_node; 
        return; 
    } 
    while(p->next != NULL){ 
        p = p->next; 
    } 
    p->next = new_node; 
} 

long long prodLastNElements(Node *start, int n) { 
    if(n <= 0) 
        return 0; 
    stack<int> stk; 
    long long res = 1; 
    Node* temp = start; 
    while (temp != NULL) { 
        stk.push(temp->data); 
        temp = temp->next; 
    } 
    while(n--){ 
        res *= stk.top(); 
        stk.pop(); 
    } 
    return res; 
} 

int main() { 
    Node *start = NULL; 
    int arr[] = {5, 7, 3, 5, 6, 9}; 
    int size = sizeof(arr)/sizeof(arr[0]); 
    int n = 3; 
    for(int i = 0; i

ผลลัพธ์

Product of last n elements: 270