c_cpp 交替拆分给定的单链表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 交替拆分给定的单链表相关的知识,希望对你有一定的参考价值。

// https://www.geeksforgeeks.org/alternating-split-of-a-given-singly-linked-list/
#include <iostream>
#include <list>
using namespace std;

struct linked_list {
    int data;
    struct linked_list *next;
};
typedef struct linked_list node;

void print(node* n) {
    while (n) {
        cout<< n->data << "->";
        n = n->next;
    }
    cout<< "NULL";
    return;
}

void insert(node** head, int n) {
    node* temp = *head;
    node* list = new node;
    list->data = n;
    list->next = NULL;
    if (temp == NULL) {
        *head = list;
        return;
    }
    while (temp->next)
        temp = temp->next;
    temp->next = list;
    return;
}

void AlternateSplit (node* head, node **aref, node **bref) {
    node* a = NULL, *b = NULL;
    bool s = true;
    while (head) {
        if (s == 1) {
            insert(&a, head->data);
            head = head->next;
            s = !s;
        }
        else {
            insert(&b, head->data);
            head = head->next;
            s = !s;
        }
    }
    *aref = a;
    *bref = b;
    return;
}

int main() {
    int n;
    node* head = NULL, *a = NULL, *b = NULL;
    while (true) {
        cout<< "Enter the number: ";
        cin>>n;
        if (n==-9)
            break;
        else
            insert(&head, n);
    }
    print(head);
    AlternateSplit(head, &a, &b);
    cout<< "\n";
    print(a);
    cout<< "\n";
    print(b);
}

以上是关于c_cpp 交替拆分给定的单链表的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp 单链表的快速排序

c_cpp FP风格的反向单链表

c_cpp 用于检查单链表是否为回文的功能

c_cpp 单链表中的替代奇数和偶数节点

c_cpp C中的单链表 - 现在只实现交换

数据结构实验之链表五:单链表的拆分