0001 /****************************************************************************************** 0002 * Data Structures in C++ 0003 * ISBN: 7-302-33064-6 & 7-302-33065-3 & 7-302-29652-2 & 7-302-26883-3 0004 * Junhui DENG, deng@tsinghua.edu.cn 0005 * Computer Science & Technology, Tsinghua University 0006 * Copyright (c) 2003-2019. All rights reserved. 0007 ******************************************************************************************/ 0008 0009 /****************************************************************************************** 0010 * Test of queue 0011 ******************************************************************************************/ 0012 #include "queue_test.h" 0013 0014 int testID = 0; //测试编号 0015 0016 /****************************************************************************************** 0017 * 测试栈 0018 ******************************************************************************************/ 0019 template <typename T> //元素类型 0020 void testQueue ( int n ) { 0021 Queue<T> Q; 0022 printf ( "\n ==== Test %2d. Growing queue\n", testID++ ); 0023 while ( Q.size() < n ) { 0024 ( Q.empty() || ( 30 < dice ( 100 ) ) ) ? 0025 Q.enqueue ( (T) dice ( 2 * n ) ) : //70%入队 0026 Q.dequeue(); //30%出队 0027 print ( Q ); 0028 } 0029 printf ( "\n ==== Test %2d. Shrinking queue\n", testID++ ); 0030 while ( !Q.empty() ) { 0031 ( 70 < dice ( 100 ) ) ? 0032 Q.enqueue ( (T) dice ( 2 * n ) ) : //30%入队 0033 Q.dequeue(); //70%出队 0034 print ( Q ); 0035 } 0036 } 0037 0038 /****************************************************************************************** 0039 * 测试队列 0040 ******************************************************************************************/ 0041 int main ( int argc, char* argv[] ) { 0042 if ( 2 > argc ) { printf ( "Usage: %s <size of test>\a\a\n", argv[0] ); return 1; } 0043 srand ( ( unsigned int ) time ( NULL ) ); 0044 testQueue<int> ( atoi ( argv[1] ) ); //元素类型可以在这里任意选择 0045 return 0; 0046 }