用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


还能输入: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、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

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

加载中,请稍后...