資料結構實驗之鍊表五 單鏈表的拆分

2021-09-23 14:34:00 字數 1399 閱讀 5556

time limit: 1000 ms memory limit: 65536 kib

submit

statistic

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

不得使用陣列!

source

單鏈表的拆分,這個題目的思路很清晰,最簡單的就是建立三個鍊錶,第乙個為初始鍊錶,後兩個為拆分之後的鍊錶。所以我們要做的就是在初始鍊錶建立完成之後分別判斷資料的奇偶性然後分別存放到不同的鍊錶中即可,這個時間複雜度要求不高,所以不用擔心超時的問題。具體解釋見**。

ac**:

#includeusing namespace std;//寫c的朋友改一下頭檔案即可

typedef struct node

tree;

int main()

int x=0,y=0;//x,y一定要初始化,我一開始沒有初始化執行之後x的值直接大的無邊無際。所以不要忘了初始化

p=head->next;//將游動指標p放到初始鍊錶的頭乙個資料的位置

head1=new tree;//建立偶數鍊錶

head1->next=null;

tail1=head1;

head2=new tree;//建立奇數鍊錶

head2->next=null;

tail2=head2;

while(p)//初始鍊錶的拆分

else

p=p->next;

} printf("%d %d\n",x,y);

q=head1->next;//將兩個拆分之後的鍊錶的游動指標進行初始化的定位

a=head2->next;

while(q)//分別輸出兩個鍊錶

else

q=q->next;

} while(a)

else

a=a->next;

} return 0;

}

資料結構實驗之鍊表五 單鏈表的拆分

time limit 1000ms memory limit 65536k 輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行分別輸出偶數鍊錶...

資料結構實驗之鍊表五 單鏈表的拆分

輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行分別輸出偶數鍊錶與奇數鍊錶的元素個數 第二行依次輸出偶數子鍊錶的所有資料 第三行依次輸出奇數...

資料結構實驗之鍊表五 單鏈表的拆分

time limit 1000ms memory limit 65536k 有疑問?點這裡 輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行...