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個整數。第一行分別輸出偶數鍊錶與奇數鍊錶的元素個數 第二行依次輸出偶數子鍊錶的所有資料 第三行依次輸出奇數...