80分双向环形链表求调
查看原帖
80分双向环形链表求调
1136735
Kuroibuta楼主2024/1/17 18:43
#include <bits/stdc++.h>
using namespace std;

struct LinkList {
    int id;
    int direction;
    string name;
    LinkList* leftPointer;
    LinkList* rightPointer;
};

int main() {
    int n, m;
    cin >> n >> m;
    LinkList* firstNode = nullptr;
    LinkList* lastNode = nullptr;
    for (int i = 0; i < n; i++) {
        LinkList* newNode = new LinkList;
        newNode->id = i;
        cin >> newNode->direction >> newNode->name;
        if (firstNode == nullptr) {
            firstNode = newNode;
            lastNode = newNode;
            newNode->leftPointer = newNode;
            newNode->rightPointer = newNode;
        } else {
            newNode->leftPointer = lastNode;
            newNode->rightPointer = firstNode;
            lastNode->rightPointer = newNode;
            firstNode->leftPointer = newNode;
            lastNode = newNode;
        }
    }
    LinkList* glassGuy = firstNode;
    int hand;
    int num;
    for (int i = 0; i < m; i++) {
        cin >> hand >> num;
        if (glassGuy->direction == hand) /* rightward count num */ {
            for (int j = 0; j < num % n; j++) {
                glassGuy = glassGuy -> leftPointer;
            }
        } else {
            for (int j = 0; j < num % n; j++) /* rightward count num */ {
                glassGuy = glassGuy -> rightPointer;
            }
        }
    }
    cout << glassGuy->name;
    /*
    LinkList* current = firstNode; // free the memory
    do {
        LinkList* next = current->rightPointer;
        delete current;
        current = next;
    } while (current != firstNode);
	*/
    return 0;
}

八十分求调

第 9 10 11 13个点挂了

谢谢!! 我是初学者

2024/1/17 18:43
加载中...