⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sequeue.cpp

📁 用C语言编写实现数据结构方面的例子
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 100

typedef struct  
{
	int data[MAXSIZE];//数据存储区
	int front;//队头
	int rear;//队尾指针
}SeQueue;


SeQueue SeQueueInit()//队列初始化
{
	SeQueue q;
	q.front=q.rear=0;
	return q;
}

SeQueue SeQueueIn(SeQueue q,int x)//入队
{
	if ((q.rear+1)%MAXSIZE==q.front)
	{
		printf("队满!\n");
		exit(0);
	}
	else
	{
		q.data[q.rear]=x;//入队
		q.rear=(q.rear+1)%MAXSIZE;//计算机队尾位置
	
	}

	return q;	
}

SeQueue SeQueueOut(SeQueue q)//出队
{
	int x;

	if(q.front==q.rear)
	{
		printf("队空\n");
		exit(0);
	}
	else
	{
		 x=q.data[q.front];
		q.front=(q.front+1)%MAXSIZE;
	   
		printf("出队元素:%d\n",x);
	}
	return q;
}

int SeQueueEmpty(SeQueue q)//判空
{
	if (q.front==q.rear)	
		return 1;
	else 
		return 0;
}

int SeQueueLength(SeQueue q)//求长度
{
	return((q.rear-q.front+MAXSIZE)%MAXSIZE);
}

int SeQueueGetHead(SeQueue q)
{
	int sq;
	if (q.front==q.rear)
		sq=-1;	
	else
		sq=q.data[q.front];

	return (sq);
}
void SeQueueDisplay(SeQueue q)//显示队列
{
	int s;

	s=q.front;
	printf("the sequeue is display:\n");
    if (q.front==q.rear)
		printf("the sequeue is empty!"); 
	else
	{
		while (s<q.rear)
		{
			printf("%d->",q.data[s]);
			s=(s+1)%MAXSIZE;
		}
	}
}


int main()
{
	SeQueue q;
	int i;
	int num,se;
	int flag=1;
	char ch;

	int select;
	int in;
	int gh;
	int lh;

	printf("create a empty sequeue\n");
	q=SeQueueInit();

	printf("please input the sequeue length:\n");	
	scanf("%d",&num);

	for (i=0;i<num;i++)
	{	
  		printf("please input a sequeue value:\n");
   		scanf("%d",&se);

   		q=SeQueueIn(q,se);
	}

	printf("sequeue->rear:%d\n",q.rear);
 	printf("sequeue->front:%d\n",q.front);
 	SeQueueDisplay(q);
	printf("\n");


	while (flag)
	{
		
		printf("select 1 **** SeQueueIn() \n");
		printf("select 2 **** SeQueueOut() \n");
		printf("select 3 **** SeQueueEmpty() \n");
		printf("select 4 **** SeQueueGetHead() \n");
		printf("select 5 **** SeQueueLength() \n");
		printf("select 6 **** SeQueueDisplay() \n");
		printf("please select (1--6):");

		scanf("%d",&select);
		switch(select)
		{
		case 1:
			printf("please input a value :\n ");
			scanf("%d",&in);
			q=SeQueueIn(q,in);
		    printf("sequeue->rear:%d\n",q.rear);
        	printf("sequeue->front:%d\n",q.front);
			SeQueueDisplay(q);
			break;
		case 2:
			q=SeQueueOut(q);
			printf("sequeue->rear:%d\n",q.rear);
        	printf("sequeue->front:%d\n",q.front);
			SeQueueDisplay(q);
			break;
		case 3:
			if(SeQueueEmpty(q))
				printf("the sequeue is empty");
			else
				printf("the sequeue is not empty");
			break;
		case 4:
			gh=SeQueueGetHead(q);
			printf("队头:%d\n",gh);
			break;
		case 5:
			lh=SeQueueLength(q);
			printf("队列长度:%d\n",lh);
			break;
		case 6:
			SeQueueDisplay(q);
			break;
		}

		printf("继续操作(Y|N)");
     	getchar();
        ch=getchar();
		if ((ch=='n')||(ch=='N'))
			flag=0;
		else
			flag=1;
		
	}


	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -