데이터 구조 순서 스 택 과 링 대기 열 기본 연산 실현

2813 단어 데이터 구조
링 큐
코드
#include
#include
#define MaxSize 100
typedef char ElemType;
typedef struct
{
	ElemType data[MaxSize];
	int front,rear;
}SqQueue;
void InitQueue(SqQueue * &q)
{
	q=(SqQueue *)malloc(sizeof(SqQueue));
	q->front=q->rear=0;
}
void DestroyQueue(SqQueue * &q)
{
	free(q);
}
bool QueueEmpty(SqQueue *q)
{
	return(q->front==q->rear);
}
bool enQueue(SqQueue *&q,ElemType e)
{
	if((q->rear+1)%MaxSize==q->front)
		return false;
	q->rear=(q->rear+1)%MaxSize;
	q->data[q->rear]=e;
	return true;
}
bool deQueue(SqQueue * &q,ElemType &e)
{
	if(q->front==q->rear)
		return false;
	q->front=(q->front+1)%MaxSize;
	e=q->data[q->front];
	return true;
}
 
int main()
{
	ElemType e;
	SqQueue *q;
	printf("        :
"); printf("(1) q
"); InitQueue(q); printf("(2) a,b,c
"); if(!enQueue(q,'a'))printf("\t:
"); if(!enQueue(q,'b'))printf("\t:
"); if(!enQueue(q,'c'))printf("\t:
"); printf(" (3) %s
",(QueueEmpty(q)?" ":" ")); if(deQueue(q,e)==0) printf("
"); else printf(" (4) %c
",e); printf(" (5) def
"); while(!QueueEmpty(q)) { deQueue(q,e); printf("%c",e); } printf("
"); printf("
"); DestroyQueue(q); return 1; }

순서 창고 
코드
#include
#include
#define maxsize 100
typedef char elemtype;
typedef struct
{
	elemtype data[maxsize];
	int top;
}sqstack;
void initstack(sqstack *&s)
{
	s=(sqstack *)malloc(sizeof(sqstack));
	s->top=-1;
}
void destroystack(sqstack *&s)
{
	free(s);
}
bool stackempty(sqstack *s)
{
	return(s->top==-1);
}
bool push(sqstack *&s,elemtype e)
{
	if(s->top==maxsize-1)
	return false;
	s->top++;
	s->data[s->top]=e;
	return true; 
}
bool pop(sqstack *&s,elemtype &e)
{
	if(s->top==-1)
	return false;
	s->top++;
	s->data[s->top]=e;
	return true;
	
}
bool gettop(sqstack *s,elemtype &e)
{
	if(s->top==-1)
	return false;
	e=s->data[s->top];
	return true;
}
int main()
{
	elemtype e;
	sqstack *s;
	printf("       :
"); printf(" "); initstack(s); printf(" %s
",(stackempty(s)?"kong":"feikong")); printf(" "); push(s,'a'); push(s,'b'); push(s,'c'); push(s,'d'); push(s,'e'); printf(" %s
",(stackempty(s)?"kong":"feikong")); while (!stackempty(s)) { pop(s,e); printf("%c",e); } destroystack(s); return 1; }

좋은 웹페이지 즐겨찾기