用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

一些题目

2012-10-09 作者: 上帝是男孩举报

[c]代码库

//  两个栈共享一个一维数组空间SPACE【N】,
//栈底分别为SPACE[0]  SPACE[N-1]
//(1) 分别写出入栈 出栈的语句

//(2)分别写出栈满  栈空的条件


#define Maxszie 100
typedef struct Stack{
	int data[Maxsize];
	int top;
}*SqStack;


//元素X入栈1

int PUSH(SqStack *S1,SqStack *S2,int x)
{
	if(((*S2)->top-(*S1)->top)==1)        //判断栈满
		return ERROR;
	(*S1)->top++;
	(*S1)->data[(*S1)->top]=x;
	return OK;
}


//元素x出栈1

int POP(SqStack *S1,int *x)
{
	if((*S1)->top==-1)           //判断栈空
		return ERROR;
	*x=(*S1)->data[(*S1)->top];
	(*S1)->top--;
	return OK;
}


//元素x入栈2

int PUSH(SqStack *S2,SqStack *S1,int x)
{
	if(((*S2)->top-(*S1)->top)==1)       //判断栈满
		return ERROR;
	(*S2)->top--;
	(*S2)->data[(*S2)->top]=x;
	return OK;
}

//元素x出栈2

int POP(SqStack *S2,SqStack *S1,int *x)
{
	if((*S2)->top==N)        //判断栈空
		return ERROR;
	*x=(*S2)->data[(*S2)->top];
	(*S2)->top++;
	return OK;
}







//用循环数组q[M]表示队列 
//该队列只有头指针front,没有尾指针rear,并改用计数器count用以记录队列中的结点个数
//(1)编写实现队列判空  入队  出队 
//(2)队列最多能容纳元素个数


#define Maxsize 100
typedef struct{
	int data[Maxsize];
	int front;    //头指针
	int count;    //记录结点个数
}*SqQueue;




//队列判空


int QueueEmpty(SqQueue *Q)
{
	if((*Q)->count==0)
		return 0;
	return 1;
}



//入队


int EnQueue(SqQueue *Q,int x)
{
	int i=0;
	if((*Q)->count==(M-1))    //判断队满
		return ERROR;
	(*Q)->count++;
	i=((*Q)->front+(*Q)->count)/Maxsize;
	(*Q)->data[i]=x;
	return OK;
}


//出队


int DeQueue(SqQueue *Q,int *x)
{
	int i;
	if((*Q)->count==0)          //判断队空
		return ERROR;
	*x=(*Q)->data[(*Q)->front];
	(*Q)->front=((*Q)->front+1)/Maxsize;
	(*Q)->count--;
	return OK;
}





//允许循环队列在两端都可以进行插入和删除操作
//(1)写出循环队列的类型定义
//写出"从队尾删除"和"从对头插入"的算法

#define Maxsize 100
typedef struct{
	int data[Maxsize];
	int front;
	int rear;
	int flat;      //如果flat为Maxsize时,队满  flat为0时  队空
}*SqQueue;


//从队尾删除


int DeQueueRear(SqQueue *Q,int *x)
{
	if((*Q)->flat==0)    //判断队空
		return ERROR;
	*x=(*Q)->data[(*Q)->rear];
	(*Q)->rear=((*Q)->rear-1)/Maxsize;
	(*Q)->flat--;
	return OK;
}




//从队头插入元素


int EnQueueFront(SqQueue *Q,int x)
{
	if((*Q)->flat==Maxsize)       //判断队满
		return ERROR;
	(*Q)->front=((*Q)->front-1)/Maxsize;
	(*Q)->data[(*Q)->front];
	(*Q)->flat++;
	return OK;
}








网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...