題目要求:給定由整數組成的兩個無序陣列,根據順序合併成乙個陣列。
輸入要求:輸入包括兩行,每行由若干個由->分隔的整數組成,分別表示以最左整數為煉表頭,單向指向右側節點的鍊錶,每行輸入均以 .結尾。
輸出要求:輸出為合併後的單向鍊錶,由->表示其間的指標,最終指向由null表示的空值。在合併過程中,比較兩個鍊錶當前待合併的第乙個元素,選擇其中較小的那個元素放入合併後的陣列。
輸入格式:輸入兩行字串,每行字串由 有符號整數、->和.組成。
輸出格式:輸出一行字串,表示合併後的陣列。
樣例輸入
1->2->3.樣例輸出1->0->2.
1->1->0->2->2->3->null關於這道題,考察鍊錶的熟練程度:會打鍊錶、並且鍊錶之間比較來進行插入操作。
要先打好結構體:
struct node
;
打煉表模板:
struct node * head,
* p,
* q;
//先定義必須的指標;
head=
null
;//讓頭指標指向null,不然後面判斷head沒法進行。
while
(scanf
("%d->"
,&a)
)//輸入的同時也判斷輸入的內容,如果是"1->"scanf返回的是1,也是true,當輸入'.'的時候,scanf返回的是0,false。被留在緩衝區
else
q=p;
//改選中的結點為下乙個結點
}
那麼我們可以根據這個模板,打出兩個鍊錶:
struct node * head,
* p,
* q,
* t,
* head1,
* p1,
* q1;
int a,b;
head=
null
; head1=
null
;while
(scanf
("%d->"
,&a)
)//這是第乙個鍊錶開始
else
q=p;
}getchar()
;//為了清除緩衝區中殘留的'.',不影響到下乙個
while
(scanf
("%d->"
,&b)
)//第二個鍊錶開始
else
q1=p1;
}
那麼到了交換的時候了,我們先定義乙個函式來專門交換兩個鍊錶之間(遞迴實現)
struct node *
exchange
(struct node *head,
struct node *head1)
//定義的函式返回值為head結點位址
struct node *head3=
null
;//該值被返回,用來做索引該鍊錶的結點。
if(head->num<=head1->num)
//開始比較大小
else
return head3;
}
最後返回的是乙個已經排好序的鍊錶的頭結點,只要利用頭結點,並且按結點迴圈就可以依次輸出我們所需的值:
t=
exchange
(head,head1)
;//傳給t
while
(t->next!=
null
)printf
("%d->null"
,t->num)
;return
0;
總**圖:
#include
#include
struct node
;struct node *
exchange
(struct node *p,
struct node *p1)
;int
main()
else
q=p;
}getchar()
;while
(scanf
("%d->"
,&b)
)else
q1=p1;
} t=
exchange
(head,head1)
;while
(t->next!=
null
)printf
("%d->null"
,t->num)
;return0;
}struct node *
exchange
(struct node *head,
struct node *head1)
struct node *head3=
null;if
(head->num<=head1->num)
else
return head3;
}
順序合併兩個非有序的鍊錶
給定由整數組成的兩個無序陣列,根據順序合併成乙個陣列。輸入包括兩行,每行由若干個由 分隔的整數組成,分別表示以最左整數為煉表頭,單向指向右側節點的鍊錶,每行輸入均以 結尾。輸出為合併後的單向鍊錶,由 表示其間的指標,最終指向由null表示的空值。在合併過程中,比較兩個鍊錶當前待合併的第乙個元素,選擇...
順序合併兩個非有序的鍊錶(C 且不用鍊錶實現)
給定由整數組成的兩個無序陣列,根據順序合併成乙個陣列。輸入包括兩行,每行由若干個由 分隔的整數組成,分別表示以最左整數為煉表頭,單向指向右側節點的鍊錶,每行輸入均以 結尾。輸出為合併後的單向鍊錶,由 表示其間的指標,最終指向由null表示的空值。在合併過程中,比較兩個鍊錶當前待合併的第乙個元素,選擇...
合併兩個有序鍊錶 C
合併兩個有序鍊錶 遞迴實現 演算法思想 遞迴終止條件 若head1為空,返回head2指標 head 若head2為空,返回head1指標 head 遞迴過程 1 若head1 data head2 data head 指標應該指向head2所指向的節點,而且head next應該指向head1和h...