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

2021-10-02 06:40:57 字數 2233 閱讀 6588

time limit: 1000 ms memory limit: 65536 kib

problem description

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

input

第一行輸入整數n;;

第二行依次輸入n個整數。

output

第一行分別輸出偶數鍊錶與奇數鍊錶的元素個數;

第二行依次輸出偶數子鍊錶的所有資料;

第三行依次輸出奇數子鍊錶的所有資料。

sample input10

1 3 22 8 15 999 9 44 6 1001

sample output

4 622 8 44 6

1 3 15 999 9 1001

hint

不得使用陣列!

source

本題其實就是,建立三個鍊錶,乙個儲存原資料,兩個儲存拆分資料;

**一:因為在鍊錶的題目中**長度較前面的**長很多,所以建議採用函式,乙個還得程式設計師,不僅要寫對**還要讓**清晰,清晰地**可以反應出程式設計師的思路清晰,進而也說明這個程式設計師的水平較高

#include

#include

struct node

;void

display

(struct node*head)

;//輸出函式;

struct node*

found

(int n)

;//建立鍊錶函式

void

division

(struct node*head,

struct node*head1,

struct node*head2,

int*a1,

int*a2)

;//鍊錶拆分函式;

intmain()

void

display

(struct node *head)

//鍊錶輸出函式;

}struct node*

found

(int n)

//鍊錶建立函式;

return

(head);}

;void

division

(struct node*head,

struct node*head1,

struct node*head2,

int*a1,

int*a2)

//鍊錶拆分函式;

else

}}

**二:

#include

#include

struct node

;int

main()

head2 =

(struct node *

)malloc

(sizeof

(struct node));

head2 -> next =

null

; head3 =

(struct node *

)malloc

(sizeof

(struct node));

head3 -> next =

null

;//同時建立兩個鍊錶;

q = head1 -> next;

struct node *p1 = head2,

*p2 = head3;

while

(q)else

//否則連線在第三個鍊錶上;

q = q -> next;

} p1 = head2 -> next;

p2 = head3 -> next;

printf

("%d %d\n"

,b,c)

;while

(p1)

//輸出;

while

(p2)

return0;

}

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

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

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

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

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

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