408 数据结构算法题2019


#include<iostream>
using namespace std;
struct node {
    int data;
    struct node* next;
};

node* solustion(node* head) {
    node* fast = head, * slow = head;

    while ( fast != NULL&& fast->next != NULL) {
        if (fast == head) {
            fast = head->next;
            slow = head;
        }
        else {
            fast = fast->next->next;
            slow = slow->next;
        }
    }
    
    node* pre = slow, * nextSlow = slow->next->next;
    slow = slow->next;
    pre->next = NULL;
    while(nextSlow!=NULL){
        slow->next = pre;
        pre = slow;
        slow = nextSlow;
        nextSlow = nextSlow->next;
    }
    slow->next = pre;
    cout << slow->data << endl;
    node* tempHead = head, * tempTail = slow;
    node* nextTempHead = tempHead->next, * nextTempTail = slow->next;
    while (tempHead!=NULL) {
        tempHead->next = tempTail;
        tempTail->next = nextTempHead;

        tempHead = nextTempHead;
        tempTail = nextTempTail;
        if (tempHead != NULL && tempTail != NULL)
        {
            nextTempHead = nextTempHead->next;
            nextTempTail = nextTempTail->next;
        }
    }
    while (head != NULL) {
        cout << head->data << "  ";
        head = head->next;
    }
    return head;

}
int main() {

    int in = 0;
    node* head = NULL;
    node* tempHead = NULL, * temp = NULL;
    while (cin >> in) {
        if (head == NULL) {
            head = (node*)malloc(sizeof(node));
            head->next = NULL;
            head->data = in;
            
            tempHead = head;
        }
        else {
            temp = (node*)malloc(sizeof(node));
            temp->next = NULL;
            temp->data = in;
            tempHead->next = temp;
            tempHead = temp;
        }
    }
    solustion(head);
}

在解此题的时候让我对于while或者说所有的循环有了新的理解。

原创文章,作者:sunnyman218,如若转载,请注明出处:https://blog.ytso.com/274895.html

(0)
上一篇 2022年7月17日
下一篇 2022年7月17日

相关推荐

发表回复

登录后才能评论