資料結構實驗之連結串列五:單連結串列的拆分
Problem Description
輸入N個整數順序建立一個單連結串列,將該單連結串列拆分成兩個子連結串列,第一個子連結串列存放了所有的偶數,第二個子連結串列存放了所有的奇數。兩個子連結串列中資料的相對次序與原連結串列一致。
Input
第一行輸入整數N;;
第二行依次輸入N個整數。
Output
第一行分別輸出偶數連結串列與奇數連結串列的元素個數;
第二行依次輸出偶數子連結串列的所有資料;
第三行依次輸出奇數子連結串列的所有資料。
Sample Input
10 1 3 22 8 15 999 9 44 6 1001
Sample Output
4 6 22 8 44 6 1 3 15 999 9 1001
Hint
不得使用陣列!
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
typedef struct Node{
int data;
struct Node *next;
}node;
int count1,count2;
void create(node * &head,int m){
node *p,*tail;
head = new Node;
head->next = NULL;
tail = head;
for(int i = 0 ; i < m ; i++){
p = new Node;
scanf("%d",&p->data);
p->next = NULL;
tail->next = p;
tail = p;
}
}
void separation(node * &head,node * &head1,node * &head2){
node *p,*p1,*p2;
p = head->next;
p1 = head1;
p2 = head2;
while(p){
if(p->data % 2 == 0){
p1->next = p;
p1 = p1->next;
p = p->next;
count1++;
}else{
p2->next = p;
p2 = p2->next;
p = p->next;
count2++;
}
}
p1->next = NULL;
p2->next = NULL;
}
void count(){
printf("%d %d\n",count1,count2);
}
void show(node * &head1,node * &head2){
node *p1,*p2;
p1 = head1->next;
p2 = head2->next;
while(p1 != NULL){
if(p1->next == NULL){
printf("%d\n",p1->data);
}else{
printf("%d ",p1->data);
}
p1 = p1->next;
}
if(p2 == NULL){
printf("\n");
}else{
while(p2 != NULL){
if(p2->next == NULL){
printf("%d",p2->data);
}else{
printf("%d ",p2->data);
}
p2 = p2->next;
}
}
}
int main(){
node *head,*head1,*head2;
head = new Node;
head1 = new Node;
head2 = new Node;
int m;
scanf("%d",&m);
create(head,m);
separation(head,head1,head2);
count();
show(head1,head2);
return 0;
}
相關文章
- 資料結構實驗之連結串列九:雙向連結串列資料結構
- 資料結構實驗之連結串列二:逆序建立連結串列資料結構
- 資料結構實驗之連結串列三:連結串列的逆置資料結構
- 資料結構實驗之連結串列六:有序連結串列的建立資料結構
- 資料結構實驗之連結串列一:順序建立連結串列資料結構
- 資料結構實驗之連結串列四:有序連結串列的歸併資料結構
- 資料結構之單連結串列資料結構
- 資料結構實驗之連結串列七:單連結串列中重複元素的刪除資料結構
- 資料結構-單連結串列、雙連結串列資料結構
- 資料結構之連結串列篇(單連結串列的常見操作)資料結構
- 【資料結構】連結串列(單連結串列實現+詳解+原碼)資料結構
- 資料結構之「連結串列」資料結構
- 資料結構之連結串列資料結構
- 畫江湖之資料結構【第一話:連結串列】單向連結串列資料結構
- 畫江湖之資料結構 [第一話:連結串列] 單向連結串列資料結構
- 連結串列-單連結串列實現
- 資料結構實驗之連結串列八:Farey序列資料結構
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 資料結構04——單連結串列資料結構
- 資料結構實驗:連結串列的應用資料結構
- 資料結構之php實現單向連結串列資料結構PHP
- js實現資料結構--單連結串列JS資料結構
- python 資料結構之單連結串列的實現Python資料結構
- JavaScript資料結構 之 連結串列JavaScript資料結構
- 資料結構之連結串列【上】資料結構
- 資料結構之連結串列操作資料結構
- JAVA資料結構之連結串列Java資料結構
- 資料結構之連結串列與陣列(3):單向連結串列上的簡單操作資料結構陣列
- 資料結構-連結串列資料結構
- 資料結構 - 連結串列資料結構
- 連結串列-資料結構資料結構
- 資料結構--連結串列資料結構
- 資料結構—連結串列資料結構
- 資料結構之連結串列:206. 反轉連結串列資料結構
- 實戰PHP資料結構基礎之單連結串列PHP資料結構
- 資料結構與演算法——連結串列 Linked List(單連結串列、雙向連結串列、單向環形連結串列-Josephu 問題)資料結構演算法
- 單連結串列的歸併(資料結構)資料結構
- 資料結構 - 單連結串列 C++ 實現資料結構C++