示例#1
0
void test_add() {
	LinkQueue<int> q;
	q.add(1);
	q.add(2);
	q.add(3);
	q.add(4);
	print_list(q);
}
示例#2
0
void print_list(LinkQueue<int> &q) {
	cout << "data:" << endl;
	while (!q.isEmpty()) {
		int d = q.pop();
		cout << d << " ";
	}
	cout << endl;
}
示例#3
0
void test_get() {
	LinkQueue<int> q;
	q.add(1);
	q.add(2);
	q.add(3);
	q.add(4);
	assert(1 == q.GetFirst());
	assert(4 ==q.GetLast());
}
示例#4
0
文件: main.cpp 项目: ZhouYuanlin/CPP
void yanghuiTriangle(int n)
//操作结果:显示三角形的第1行~第n行
{
    LinkQueue<int> q;
    int s, t;
    
    q.InQueue(1);
    q.InQueue(1);                                 //存储杨辉三角形的第一行的两个元素值
    
    cout << 1 << "\t" << 1;                       //显示杨辉三角的第一行
    for (int i = 2; i <= n; i++) {
        //依次显示杨辉三角形的第2行~第n行
        cout << endl;
        q.InQueue(1);                             //第i行第1个元素值为1
        cout << 1 << "\t";                        //显示第i行第1个元素值
        q.OutQueue(s);                            //取出第i-1行第1个元素
        for (int j = 2; j <= i; j++) {
            q.OutQueue(t);                        //取出第i-1行第j个元素
            q.InQueue(s+t);                       //s+t为第i行第j个元素的值
            cout << s+t << "\t";                  //显示第i行第j个元素的值
            s = t;
        }
        q.InQueue(1);                             //第i行第i+1个元素的值为1
        cout << 1;
    }
    cout << endl;
}
示例#5
0
文件: MyTree.cpp 项目: styxschip/Note
//层序遍历
void MyTree::LayerTraverse(TreeNode* pNode)
{
  LinkQueue<TreeNode*> queue;
  TreeNode* pCur = pNode;
  queue.EnQueue(pCur);
  while(true)
  {
    pCur = queue.DeQueue();
    printf("%d[%d] ", pCur->m_Data, pCur->m_nDepth);

    //压入左子树
    if(pCur->m_pLeft)
    {
      queue.EnQueue(pCur->m_pLeft);
    }
    
    //压入右子树
    if(pCur->m_pRight)
    {
      queue.EnQueue(pCur->m_pRight);
    }

    if(queue.IsEmpty())
    {
      break;
    }
  }
}
int main()
{
    int maxSize = 5;
    LinkQueue *lq = new LinkQueue(maxSize);

    for(int j = 0; j < maxSize+2; j++)
	lq->insert(j);

    lq->displayQueue();

    for(int j = 0; j < maxSize+2; j++)
    {
	double tmp = lq->remove();
	if(tmp != -1)
	    cout << tmp << " ";
    }
    cout << endl;
	    
    delete lq;

    return 0;
}
示例#7
0
int main(){
	ifstream fin("data.txt");
	assert(fin);
	LinkQueue<int> que;
	int data;
	while (!fin.eof()){
		assert(fin >> data);
		que.EnQueue(data);
	}
	cout << "The queue in the file is:\n" << que << endl;
	que.getFront(data);
	cout << "The front in the queue is: " << data << endl;
	
	cout << "Delete the front in turn, the result is:" << endl;
	int len = que.getSize();
	for(int i = 0; i < len; i++){
		que.DeQueue(data);
		cout << "Delete " << data << ", then the queue is:\n";
		cout << que << endl;
	}
	return 0;
}
示例#8
0
int main()
{
	LinkQueue lq;
	DataType t;
	cout << "is empty?" << lq.Empty_Queue() << endl;
	for (int i = 0; i < 10; i++)
	{
		lq.EnQueue(i);
	}
	cout << "is empty?" << lq.Empty_Queue() << endl;
	lq.Print();
	lq.DeQueue(t);
	lq.GetFrontQueue(t);
	cout << "t" << t << endl;
	lq.Print();
	system("pause");
	return 0;
}
示例#9
0
int main() {
    LinkQueue<int> queue;
    int init[10]= {1,3,6,8,9,2,0,5,4,7};

    for(int i=0; i<10; i++) {
        queue.Append(init[i]);
    }
    queue.Print();

    queue.Delete();
    queue.Print();

    cout<<queue.GetFront()<<endl;
    queue.Print();

    queue.MakeEmpty();
    queue.Print();

    getchar();

    return 0;
}
示例#10
0
/// 主函数
int main( )
{
    // 调试状态下的输出信息
    #ifdef DEBUG           // 如果宏定义了DEBUG, 执行一下语句
    cout <<"\t\tHello World*****************************************" <<endl;
    cout <<"\t\t**              Now Start Debug                   **" <<endl;
    cout <<"\t\t*****************************************Hello World" <<endl;
    #endif

    // 非调试状态下的输出信息
    #ifndef DEBUG                // 如果宏定义了DEBUG, 执行一下语句
    cout <<"\t\t**************************************************** " <<endl;
    cout <<"\t\t**               Test SqQueue Of                  **" <<endl;
    cout <<"\t\t****************************************************" <<endl;
    #endif

    Welcome( );         // 欢迎界面



    // 程序初始化部分
    char answer;
    int choice, length, temp;

    LinkQueue<int> queue;     // 建立一个顺序队

    Lording( );         // 载入函数
    while( 1 )
    {

        Menu( );        // 系统菜单

        cin >>choice;         // 输入您的选择

        system("cls");        // 确认自己的选择后清屏

        // 分支语句进行判断
        switch(choice)
        {
            /// 1 -=> 新建一整形线性表
          case 1:
            // 系统信息提示
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t** 您当前的选择1 -=> 新建一整形顺序循环队列 **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl <<endl;

            // 程序测试部分
            cout <<"请输入您希望建立的顺序队的队宽" <<endl;
            cout <<"输入后系统会建立一个顺序队数据随机" <<endl;
            cin >>length;       // 输入顺序队的数据

            srand(time(NULL));              // 设置随机数种子
            for(int i = 0; i < length; i++) // 将系统设置的数据压入队中
            {
                temp = rand() % 100 + 1;                    // 设置一个1-100的随机数
                queue.InQueue(temp);                           // 将数据压入队中
                cout <<"将数据" <<temp <<"压入队中" <<endl; // 提示信息
            }
            cout <<"当前链式循环队列的长度" <<queue.Length( ) <<endl;
            // 系统信息提示
            cout <<endl <<endl;
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              数据入队完毕            **" <<endl;
            cout <<"\t\t**             即将返回主菜单           **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;
            system("pause");
            break;

          /// 2 -=> 显示建立的顺序循环队列
          case 2:
            // 系统提示信息
            cout <<"\t\t********************************************" <<endl;
            cout <<"\t\t** 您当前的选择2 -=> 依次弹出顺序队的数据 **" <<endl;
            cout <<"\t\t********************************************" <<endl <<endl <<endl;

            while(!queue.Empty())
            {
                cout <<"弹出的数据: " <<queue.OutQueue() <<endl;
            }
            cout <<"当前链式循环队列的长度" <<queue.Length( ) <<endl;

            // 系统提示信息
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              数据入队完毕            **" <<endl;
            cout <<"\t\t**             即将返回主菜单           **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;
            system("pause");
            break;

          /// 3 -=> 元素入队
          case 3:

            // 系统提示信息
            system("cls");
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**      您当前的选择5 -=> 元素入队      **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl <<endl;


            // 程序测试部分
            cout <<"由于这是队数据结构, 无法设置入队位置" <<endl <<endl;
            while( 1 )
            {
                cout <<endl <<endl <<"请输入您要入队的数据[输入0结束入队]" <<endl;
                cin >>temp;
                if(temp == 0)
                {
                    break;
                }
                queue.InQueue(temp);
                cout <<"将数据" <<temp <<"扎入队顶" <<endl;
            }
            // 系统提示信息
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              数据入队完毕            **" <<endl;
            cout <<"\t\t**             即将返回主菜单           **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;
            system("pause");
            break;

          /// 4 -=> 元素出队
          case 4:
            // 系统提示信息
            system("cls");
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**      您当前的选择5 -=> 元素出队     **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl <<endl;

            // 程序测试部分

            do
            {	// 循环直到用户输入恰当的回答为止
                cout <<endl <<endl <<"请问您是否确定需要弹出队顶数据" <<endl;
                cout << "(y, n)?" << "用y或n回答:";
                while ((answer = getchar( )) == '\n');	// 跳过空格,制表符及换行符获取一字符
                if(answer == 'y' || answer == 'Y')         // 只要队不是空的
                {
                    if(queue.OutQueue(temp) == true)     // 弹出队顶元素
                    {
                        cout <<"弹出队顶数据" <<temp <<endl;
                    }
                }
                else if(answer != 'n' && answer != 'N')
                {
                    cout <<"信息输入有误, 请重新输入" <<endl;
                }

                if(queue.Empty() == true)   // 如果当前顺序队为空, 则系统将自动返回主菜单
                {
                    cout <<"队列中元素全部出队, 无法继续出队" <<endl;
                    break;
                }
            }while (answer != 'n' && answer != 'N');

            // 系统提示信息
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              数据出队完毕            **" <<endl;
            cout <<"\t\t**             即将返回主菜单           **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;
            system("pause");
            break;

          /// 5 -=> 清空顺序循环队列
          case 5:
            // 系统提示信息
            system("cls");
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**     您当前的选择6 -=> 清空顺序队     **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl <<endl;

            // 程序测试部分
            queue.Clear( );         // 将顺序队清空
            cout <<"清空完毕, 当前顺序队长度" <<queue.Length() <<endl <<endl;
            // 系统提示信息
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              队列清空完毕            **" <<endl;
            cout <<"\t\t**             即将返回主菜单           **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;
            system("pause");
            break;

          /// 0 -=> 退出程序
          case 0:
            // 系统提示信息
            cout <<"\t\t******************************************" <<endl;
            cout <<"\t\t**              玩家选择结束            **" <<endl;
            cout <<"\t\t**           系统正在做返回处理         **" <<endl;
            cout <<"\t\t******************************************" <<endl <<endl;
            cout <<"Please ent any key to continue........................" <<endl;          // 系统提示信息

            Stop( );

            Lording( );         // 载入函数
        }
    }

    return 0;
}