首页 > 编程语言 >2008秋-计算机软件基础-实验三 参考源程序

2008秋-计算机软件基础-实验三 参考源程序

时间:2023-11-08 10:38:22浏览次数:33  
标签:head 计算机软件 queue quelen printf front 2008 源程序 rear

实验三 参考源程序
//软件基础 教材 79 页 习题6 答案
//Eman Lee


#include<stdio.h>

#include<stdlib.h>
#define m 5 //队列容量
//定义队列的结构
struct queue 

{

    int seq[m];//队列元素
    int quelen;//队列中元素个数
    int rear;//队列尾指针
};
//初始化队列
struct queue *initial()

{

    struct queue * head;

    head=(struct queue*)malloc(sizeof(struct queue));

    head->rear=0;

    head->quelen=0;

    return head;

}
//入队列
void EnterQueue(struct queue *head,int x)

{

    printf("\n %d Enter queue.\n",x);

    if(head->quelen==m)//队列 满
    {

        printf("queue is full.Enter queue,failed.\n");

        return;

    }

    head->seq[head->rear]=x;

    head->rear=(head->rear+1)%m;

    head->quelen++;

}
//出队列
void GoOutOfQueue(struct queue *head)

{

    int front;

    if(head->quelen==0)//队列 空
    {

        printf("queue is empty, go out of queue, failed.\n");

        return;

    }

    if(head->rear >= head->quelen)//第一种情况
        front=head->rear-head->quelen;

    if(head->rear < head->quelen)//第二种情况
        front=head->rear+(m-head->quelen);

    printf("\n %d goes out of queue.\n",head->seq[front]);

    

    head->quelen--;

}
//显示队列
void ShowQueue(struct queue *head)

{

    

    int i;

    int front;

    if(head->quelen==0)

    {

        printf("\n queue is empty.\n");

        return;

    }

    printf("\n Show queue elements:\n");

    if(head->rear >= head->quelen)//第一种情况
    {

        front=head->rear-head->quelen;

        for(i=front;i<head->rear;i++)

            printf(" %d ",head->seq[i]);

        printf("\n");

        return;

    }

    

    if(head->rear < head->quelen)//第二种情况
    {

        front=head->rear+(m-head->quelen);

        for(i=front;i<m;i++)

            printf(" %d ",head->seq[i]);

        for(i=0;i<head->rear;i++)

            printf(" %d ",head->seq[i]);

    printf("\n");

    return;

    }

    

}

void main()

{

    int i;

    struct queue * head;

    head=initial();

    ShowQueue(head);

    for(i=0;i<10;i++)

    {

        EnterQueue(head,i+10);

        EnterQueue(head,i+100);

        ShowQueue(head);

        GoOutOfQueue(head);

        ShowQueue(head);

    }

}

标签:head,计算机软件,queue,quelen,printf,front,2008,源程序,rear
From: https://blog.51cto.com/emanlee/8245742

相关文章

  • 2008秋-计算机软件基础- 实验二 参考源程序
    实验二参考源程序/*Author:EmanLee,计算机软件基础教材P79,ex4设有一头为head的带头结点的单链表,其数据域为整形数据且递增有序。试写一算法,将元素插入链表适当的位置,以保持链表的有序性。*/#include<stdio.h>#include<stdlib.h>typedefintDataType;struc......
  • 2008秋-计算机软件基础-冒泡排序
    /*Title:冒泡排序Author:emanlee算法功能:冒泡排序算法实现将一个长度为n的线性表r上的所有元素按关键字升序排列。*/#include<stdio.h>voidbubblesort(intr[],intn){/*elementsarestoredinr[1]tor[n]*/inti,j,flag;inttemp;flag=1;i......
  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题4,5
    Author:EmanLee 计算机软件基础,教材P131,第4题参考答案(1)查找e的过程abcdefghLow=1Mid=4High=8abcdefghLow=5Mid=6High=8abcdefghLow=5Mid=5High=5查找成功(2)查找f的过程abcdefghLow=1Mid=4High=8abcdefghLow=5Mid=6High=8查找成功(3)查找h的过程abcdefghLow=1Mid=4High=8abcdefghLo......
  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题6之一
    Author:EmanLee P131,第6题之一参考答案(1)      直接插入排序初始状态第一趟第二趟第三趟第四趟第五趟第六趟第七趟第八趟第九趟(2)      冒泡排序初始状态第一趟 第二趟第三趟第四趟第五趟 第六趟 第七趟第八趟第九趟53       12    12 ......
  • 2008秋-计算机软件基础-快速排序
    快速排序c语言源程序之一//快速排序//使用递归调用来实现快速排序//Author:emanlee/*QuickSort*/#include<stdio.h>voidquick_sort(intdata[],intlow,inthigh){inti,j,pivot;if(low<high){pivot=data[low];......
  • 2008秋-计算机软件基础-第四章习题参考答案 P131 ,习题6之二
    P131,第6题之二参考答案(1)      快速排序(第一趟)初始状态Pivot=5353871261706827652135J向左扫描ij第一次交换后358712617068276521ijI向右扫描,第二次交换后351261706827652187ijJ向左扫描,第三次交换后352112617068276587ijI向右扫描,第四次交换352112706827656187ijJ向左扫描35......
  • 2008秋-计算机软件基础-直接插入排序
    //==============================================//直接插入排序(StraightSelectionSort)//Author:emanlee//直接插入排序c语言源程序//==============================================#defineN5#include<stdio.h>//显示元素voidDisplay(inta[],intelem......
  • 2008秋-计算机软件基础-简单选择排序
    //===========================================//简单选择排序//Author:EmanLee//===========================================#include<stdio.h>#defineN10voidDisplay(int*a,intn){inti;for(i=0;i<n;i++){printf(&qu......
  • 2008毕业设计-毕业设计需要了解的信息
     学号:姓名:系别:专业:班级:联系电话:常用邮箱:备用联系方式家庭电话:宿舍电话:备用邮箱: 选择的题目:在就业单位做毕业设计,还是在学校做毕业设计: (在其后填写是或否):是否有PC:是否已过四级:是否有需要补考课程:是否已签订工作: 工作地点: 是否学习过(在其后填写是或否):CC++JavaC#2003C#2005VB......
  • 2008秋-计算机软件基础-实验内容
    ------------------------------------------------------------------题目:实验C语言综合复习目的:掌握函数,结构体,指针的使用,预习线性表的顺序存储(顺序表)实验内容:1看PPT, 函数,结构体,指针章节。要求: -----------------------------------------------------------......