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

2021-08-07 13:39:50 字數 1597 閱讀 3889

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

第一行輸入整數n;;

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

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

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

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

10

1 3 22 8 15 999 9 44 6 1001

4 6

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