回 帖 发 新 帖 刷新版面

主题:我是新手,请高手帮心!!!!!!

3.1        实现顺序栈各种基本运算的算法
编写一个程序,实现顺序栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)       初始化栈s。
(2)       判断栈s是否非空。
(3)       依次进栈元素a,b,c,d,e.
(4)       判断栈s是否非空。
(5)       输出栈长度。
(6)       输出从栈顶到栈底的元素。
(7)    输出出栈序列。
(8)     判断栈s是否非空。
(9)    释放栈。


3.2        实现链栈各种基本运算的算法
编写一个程序,实现链栈的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)       初始化链栈s。
(2)       判断链栈s是否非空。
(3)       依次进链栈元素a,b,c,d,e.
(4)       判断链栈s是否非空。
(5)       输出链栈长度。
(6)       输出从栈顶到栈底的元素。
(7)    输出出链栈序列。
(8)     判断链栈s是否非空。
(9)    释放链栈。

3.3        实现顺序队列各种基本运算的算法
编写一个程序,实现顺序队列的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)       初始化队列q。
(2)       判断队列q是否非空。
(3)       依次进队元素a,b,c。
(4)       出队一个元素,输出该元素。
(5)       输出队列q的元素个数。
(6)       依次进队列元素d,e,f。
(7)    输出队列q的元素个数。
(8)     输出出队序列。
(9)    释放队列。

3.4        实现链队列各种基本运算的算法
编写一个程序,实现链队列的各种基本运算,并在此基础上设计一个主程序完成如下功能:
(1)       初始化链队列q。
(2)       判断链队列q是否非空。
(3)       依次进队元素a,b,c。
(4)       出队一个元素,输出该元素。
(5)       输出链队q的元素个数。
(6)       依次进链队元素d,e,f。
(7)    输出链队q的元素个数。
(8)     输出出队序列。
(9)    释放队列。

3.5    病人看病模拟程序
编写一个程序,反应病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事:
(1)    病人到达诊室,将病历本交给护士,排到等待队列中候诊。
(2)    护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。
要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:
(1)    排队---输入排队病人的病历号,加入病人排队队列中;
(2)    就诊---病人排队队列中最前面的病人就疹,并将其从队列中删除;
(3)    查看排队---从队首到队尾列出所有的排队病人的病历号;
(4)    不再排队,余下依次就诊---从队首到队尾列出所有的排队病人的病历号,并退出运行;
(5)    下班---推出运行。

回复列表 (共5个回复)

沙发

晕! 你想整死谁啊!一下子弄了这么多问题!

板凳

好多问题啊!看来有的玩了.

3 楼

3.1(1)#define maxsize 100
  typedef struct
{int data[maxsize];
int top;}seqlist;
void init(seqlist *p)
{s->top==-1;}[em3]
时间有限,在写吧

4 楼

#include "stdio.h"
#include "stdlib.h"
typedef char datatype;
typedef struct qnode
{   datatype data;
    struct qnode *next;
}linklist;

typedef struct
{   linklist *front;
    linklist *rear;
}linkqueue;
linkqueue *q;

int empty()                                        /*判队空*/
{
    if(q->front==q->rear)
        return(1);
    else return(0);
}

datatype dequeue()                                  /*出队*/
{
    linklist *s;
    if(q->rear==NULL)
    {
        printf("队空"); return NULL;
    }
    else if(q->front==q->rear)
    {   s=q->front;
        q->front=q->rear=NULL;
        return(s->data);
        free(s);
    }
    else
    {
        s=q->front;
        q->front=q->front->next;
        return(s->data);
        free(s);
    }
}

enqueue(datatype x)                                 /*入队*/
{
    linklist *s;
    s=malloc(sizeof(linklist));
    s->data=x;
    s->next=NULL;
    if(q->rear==NULL)
        q->front=q->rear=s;
    else
    {   q->rear->next=s;
        q->rear=s;
    }
}

datatype front()                               /*取队头结点数据*/
{
    if(q->rear==NULL)
    {   printf("队空");  return NULL;}
    else   return (q->front->data);
}

setnull()                                         /*置空队*/
{
    q->front=malloc(sizeof(linklist));
    q->front->next=NULL;
    q->rear=q->front;
}

linkqueue *creat()                              /*建立新链队*/
{
    q=malloc(sizeof(linkqueue));
    q->front->next=q->rear->next=NULL;
}

int queuelength()                                 /*求队长*/
{
    int n=0;
    linklist *p=q->front;
    while(p!=NULL)
    {   n++;
        p=p->next;
    }
    return(n);
}

print()                                        /*输出队中数据*/
{
    linklist *a;
    a=q->front;
    if(q->rear==NULL)
    {   printf("空队\n"); return NULL;}
    else
    {   do
        {   printf("%c",a->data);
            a=a->next;
        }while(a);
        printf("\n");
    }
}
    

main()
{
    int a,b;datatype x,y;
    do
    {   printf("\n**********主菜单**********\n");
        printf("1.建立新链队\n");
        printf("2.入队\n");
        printf("3.出队\n");
        printf("4.取队头\n");
        printf("5.判队空\n");
        printf("6.置空队\n");
        printf("7.求队长\n");
        printf("8.输出链队中数据\n");
        printf("0.退出\n");
        printf("请选择:");
        scanf("%d",&a);getchar();
        switch(a)
        {   case 1:q=creat();break;
            case 2:do
                   {    printf("输入要入队的数据:");
                        scanf("%c",&x);getchar();
                        enqueue(x);
                        printf("是否继续?");
                        scanf("%c",&y);getchar();
                   }while(y=='y');break;
            case 3:printf("%c\n",x=dequeue());break;
            case 4:printf("%c\n",x=front());break;
            case 5:b=empty();printf("%d\n",b);break;
            case 6:setnull();break;
            case 7:b=queuelength();printf("%d\n",b);break;
            case 8:print();break;
            case 0:exit(0);break;
        }
    }while(1);
}

5 楼

为了中国软件工业的未来,有爱心的朋友请不要帮忙代做作业,或者至少是收费服务!
如果您不需要钱,或者您不愿收费用于自己,请把收取的钱用于支援山区贫困学生。。。
谢谢大家!!!

1) 努力,自己做。
2) 放弃, 改行, 学别的。
3) 挂科,重修,不放弃,下学期努力。
4) 花大钱,雇别人做,欺骗老师,不过下学期你大概要努力一点了。
5) 不努力,不花钱,欺骗老师,下学期故技重演。

你选择!!!
But, the last two need help of other victims or volunteers. 

我来回复

您尚未登录,请登录后再回复。点此登录或注册