輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。
第一行輸入整數n;;第二行依次輸入n個整數。
第一行分別輸出偶數鍊錶與奇數鍊錶的元素個數;第二行依次輸出偶數子鍊錶的所有資料;
第三行依次輸出奇數子鍊錶的所有資料。
101 3 22 8 15 999 9 44 6 1001
4 622 8 44 6
1 3 15 999 9 1001
不得使用陣列!
/*
特別注意在拆分數的時候,一定要再定義兩個變數,分別指向偶數和奇數表的頭結點,一開始,再判斷l鍊錶中資料的時候,我就直接把資料給了w和r,這樣w和r頭結點是移動的,最後資料拆分結束了之後,w和r就指向了資料的最後,輸出的資料也就是最後的資料;所以在儲存資料的過程中,要另外再定義兩個變數,s1和s2,分別指向w和r的頭結點,每一次往下移動的都是s1和s2,這樣兩個子表就建成了,這樣在輸出資料的時候,就有a和b分別指向w和r的頭結點,然後依次往下輸出表中資料;
我們在建表過程中也是,先建乙個頭結點l,然後另外定義乙個變數p指向l,在輸入資料的時候,又有乙個s,把s的指標給了p的指標域,然後p再往後移動乙個位置,每輸入乙個資料都會有乙個s,這樣表就建成了,而且頭結點l始終都在最前面;
*/#include
#include
#include
<
string
.h>
#include
using namespace std;
typedef struct node
node;
int n;
node *w,*r;
node *creat(int n)
p->next=
null;//在最後資料儲存結束後,要把最後的指標域置空
return l;
}void fenshu(node *l)
else
p=p->next;
}s1->next=
null;//資料拆分完了之後,要把資料最後的指標域置空;
s2->next=
null;//置空以便遍歷輸出時控制
printf("%d %d\n",cout1,cout2);
}void shuchu()
//當指標域為空的時候p->next=null;就跳出迴圈
printf("%d\n",a->
data);//並把最後乙個資料輸出
b=r->next;
while(b&& b->next!=
null)
printf("%d\n",b->
data);
}int main()
2120 資料結構實驗之鍊表五 單鏈表的拆分
time limit 1000ms memory limit 65536k 有疑問?點這裡 輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行...
資料結構實驗之鍊表五 單鏈表的拆分
time limit 1000ms memory limit 65536k 輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行分別輸出偶數鍊錶...
資料結構實驗之鍊表五 單鏈表的拆分
輸入n個整數順序建立乙個單鏈表,將該單鏈表拆分成兩個子鍊錶,第乙個子鍊錶存放了所有的偶數,第二個子鍊錶存放了所有的奇數。兩個子煉表中資料的相對次序與原鍊錶一致。第一行輸入整數n 第二行依次輸入n個整數。第一行分別輸出偶數鍊錶與奇數鍊錶的元素個數 第二行依次輸出偶數子鍊錶的所有資料 第三行依次輸出奇數...