する#include <stdio.hに> する#include < 文字列・H> の#include <malloc.hを> の#pragma警告(無効:4996) の#define ERROR 0 の#define OK 1 の#define MAXSIZE 100 のtypedef int型ElemType。 typedef int型のステータス。 typedefは構造体のlノード。 typedefは構造体{ ElemType *のELEM。 int型の長さ。 int型LISTSIZE; } SqList。 typedef 構造体lノード{ ElemTypeデータ。 構造体lノード* 次の; } lノード、 * LINKLIST。 ステータスInitSqlist(SqList&L){ // 初始化顺序表 L.elem = 新しいElemType [MAXSIZE]。 もし(!L.elem)リターンERROR; L.length = 0 ; L.listsize = MAXSIZE。 返却OK。 } ステータスInitLinkList(LINKLIST&L){ // 初始化单链表 L =(lノード*)はmalloc(はsizeof (lノード))。 もし(!L) の戻りERROR; L - >次=NULL; 戻りOKを; } ステータスaddLinkList(LINKLIST&L、lノード* P){ // 単一のリンク・リストにデータを追加 lノード* E; E = L; 一方(E-> 次に){ E = E-> 次に、 } E - >次に= P; P - >次に= NULL; 戻りOKを; } ステータスshowLinkList(LINKLIST&L){ // 表示データを単一のリスト のprintf(" リストデータ配列である:\ N- " ); lノード * E = L ; しばらく(E-> 次に) { のprintf(" %のD "、E->ネクスト> データ); E = E-> 次に、 } のprintf(" \ N- " ); 戻りOKを; } ステータスshowSqlist(SqList&L){ // の表示データシーケンステーブル のprintf(" 注文テーブルデータである:\ N- " ) のために(int型 I = 0 ; IはL.lengthを<; Iは++ ) { のprintf(" %のD " 、L.elem [I]) ; } のprintf(" \ nを" ); 返却OK。 } ステータスtranLinkList(LINKLIST&L){ // 就地逆置单链表 lノード* P、Q *、* E。 もし(L->次の!)戻りERROR; P = L。 Q = P->ネクスト> 次。 P - >ネクスト>次= NULL; 一方、(Q){ E = Q-> 次。 Q - >次= P-> 次。 P - >次= Q。 Q = E; } リターン OK。 } ステータスunitSqList(SqList&、SqList&B、SqList&C){ // データ増分順序テーブル(C)、表AおよびBに昇順に配列表の同一の数、bは好きではない int型I、Jを、K; I = 0 、 J = 0 、 K = 0 ; 一方は、(真の){ IF(I> J a.length ||> てb.lengthする){ 戻りOKを; } IF(a.elem [I]> B .ELEM [J]){ J ++ ; 続行; } IF(a.elem [I] <b.elem [J]){ I ++ 。 続け; } もし(a.elem [I] == b.elem [J]){ J ++ 。 c.elem [K] = a.elem [I]。 c.length ++ ; K ++ ; 続け; } } } ステータスunitLinkList(LINKLIST&A、LINKLIST&B、LINKLIST&C){ lノード * P、Q *、* R。 P = A-> 次。 Q = B-> 次。 しばらく(真) { もし!(P || Q){ リターンOK。 } であれば(P->データ> Q-> データ){ Q = Q-> 次。 続け; } であれば(P->データ<Q-> データ){ P = P-> 次。 続け; } であれば(P->データ== Q-> データ){ R =(lノード*)はmalloc(はsizeof (lノード))。 R - >データ= P-> データ。 addLinkList(C、R)。 Q= Q-> 次。 続け; } } } ボイドメイン(){ LINKLIST L、M、N。 InitLinkList(L)。 InitLinkList(M)。 InitLinkList(N)。 int型 NUM1 [ 10 ] = { 1、2、3、4、5、6、7、8、9、10 }。 INTの NUM2 [ 10 ] = { 3、4、5、6、 7、9、10、11、12、13 }。 以下のために(int型 i = 0 ; iは< 10 I ++; ){ lノード * P =(lノード*)はmalloc(はsizeof (lノードを)); lノード * Q =(lノード*)はmalloc(はsizeof (lノード))。 P - >データ= NUM1 [I]。 Q - >データ= NUM2 [I]。 addLinkList(L、P)。 addLinkList(M、Q)。 } unitLinkList(L、M、N)。 showLinkList(L)。 showLinkList(M)。 showLinkList(N)。 SqList A、B、C。 InitSqlist(A)。 InitSqlist(B)。 InitSqlist(C)。 用(INT J = 0 ; J < 10 ; J ++ ){ A.elem [J] = NUM1 [J]。 A.length ++ ; B.elem [J] = NUM2 [J]。 b.length ++ ; } unitSqList(A、B、C)。 showSqlist(A)。 showSqlist(B)。 showSqlist(C)。 }