1の#include <iostreamの> 2 使用して 名前空間STD; 3 。4のtypedef 構造体ノード 5 { 6 INT NUM; 7 ノード* pNext; 8 }スタック、キュー; 9 10 // リンクリスト挿入のヘッドスタックに対応するスタック 11のスタック* stack_push(** PCF間スタック、INT NUM) 12は、 { 13は、 スタック*•PNODE =(スタック*)はmalloc(はsizeof (スタック)); 14 pNode-> NUM = NUM; 15 pNode-> pNext = NULL; 16 17 pNode-> pNext = * PTOP。 18 * PTOP = PNODE。 19 20 リターン * PTOP。 21 } 22 23 のint stack_pop(スタック** PTOP) 24 { 25 であれば((* PTOP)== NULL)リターン - 1 。 26 27 スタック* PPOP = * PTOP; 28 int型 NUM = pPop-> NUM; 29 30 * PTOP =(* PTOP) - > pNext。 31 フリー(PPOP)。 32 のpPOP =NULL; 33は 34である 戻りNUMを; 35 } 36 37 [ ボイド PrintStack(スタック* PCF間) 38である { 39 COUT << " 現在のスタック要素:" << pTop-> NUM << ENDL; 40 } 41は 42であり、 // キュースタックに 43である * queue_push(スタックpTop1 **、** pTop2スタック、キューINT NUM) 44である { 45 // 最初の要素はスタック全体場合に押し戻される2スタックがあるかどうか1判断 46である IF((* pTop2)!= NULL) 47 { 48 しばらく((* pTop2)!=NULL) 49 { 50 stack_push(pTop1、stack_pop(pTop2)); 51である } 52である } 53である 54れる // 既存の要素は、すべてのスタックにされている、またはスタックが1空である 55 // スタックに直接 56で stack_push(pTop1、NUM) 、 57である 58 リターン(キュー* )pTop1; 59 } 60 61である INT queue_popは(pTop1スタック**、**スタックpTop2)が 62である { 63れる //は、すべてのスタック要素1を配置する要素がない場合、スタックを決定しています図2は、スタックポップにプッシュした後、 64 IF((* pTop1)!= NULL) 65 { 66 一方、((* pTop1)!= NULL) 67 { 68 stack_push(pTop2、stack_pop(pTop1)); 69 } 70 } 71は、 72 のリターン; stack_pop(pTop2) 73である } 74 75 のint main()の 76 { 77 スタック* pTop1 = NULLは; // にスタックに 78 スタックpTop2 * = NULL; // スタックのための 79 / * stack_push(&PCF間,. 1); 80 stack_push(&PCF間、2); 81 stack_push(&PCF間,. 3); 82 stack_push(&PTOP、4)。 3 )。 92 queue_push(&pTop1、&pTop2、4 )。 93 queue_pop(&pTop1、&pTop2)。 94 queue_pop(&pTop1、&pTop2)。 95 96 システム(" 一時停止" )。 97 リターン 0 ; 98 }