C语言,用数组实现队列的入队,出队函数编程

假设数组a[10],有一系列坐标点(x,y)多于10个,依次加入到数组a[0],a[1]....,队列到a[10],第12个坐标点,加入到a[10],原本a[10]的坐标点数值移到a[9],原本的a[9]的坐标点数值移到a[8],依次类推,原本第a[0]的坐标点数值移出队列

这样的话应该符合你的要求:

#include<stdio.h>
void add(int queue[],int x);
int Top(int queue[]);
void del(int queue[]);
int end=0;
int main()
{
 int n;
 scanf("%d",&n);//将要入队列n个元素
 int queue[1000];
 for(int i=1;i<=n;i++)//输入n个元素
 {
  add(queue,i);//将i加入队列
 }
 //验证加入队列的元素,将队列中的元素按照输入的顺序输出:
 for( i=1;i<=n;i++)
 {
  printf("%d ",Top(queue));//Top函数返回队头元素
  del(queue);//删除队头元素
 }
 //验证输出已经出队列后的队列(数组)元素:
 printf("\n");
 for(i=1;i<=n;i++)
  printf("%d ",queue[i]);
 printf("\n");
 return 0;
}
void add(int queue[],int x)
{
    queue[++end]=x;
}
int Top(int queue[])
{
    return queue[1];//注意,这里的函数始终return queue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
void del(int queue[])
{
    for(int i=2;i<=end;i++)
 {
  queue[i-1]=queue[i];
 }
 queue[end]=0;//将删除后的地方置0
 end--;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-27
for(i=0; i < 9; i++)
a[i] = a[i+1];
a[i] = ...;
你得像这样正向移

C语言用数组实现循环队列的入队出队
\/\/将val入队que[front++]=val;front%=N;出队(一般在出队前判断队列是否为空)rear=(rear+1)%N;下一个要出队的元素(一般先判断是否为空)que[rear];

...一个字符循环队列,实现字符元素入队列、出队列、显示队列元素等操作...
您可以使用数组来实现循环队列。以下是一个简单的C语言实现,其中包括入队、出队和显示队列元素的操作:```c#include #define MAXSIZE 50typedef struct { char data[MAXSIZE]; int front; int rear;}Queue;void initQueue(Queue *q) { q->front = 0; q->rear = 0;}int isE...

C语言队列的插入与删除
include <stdio.h>#include <stdlib.h>#define MAXQSIZE 100 \/\/最大队列长度#define OK 1#define ERROR 0#define OVERFLOW -2typedef struct{int *base;int front;int rear; \/\/尾指针,若队列不空,指向队列尾元素的下一个位置}SqQueue;void InitQueue(SqQueue *Q){Q->front = Q->rear...

C语言的队列如何实现和表示
用的是单向链表,当然也可以用双向链表,不过删除,添加元素的过程要麻烦点。二,利用数组,当然也可以开辟动态储存空间 int a[N],*head,*rear; N就是个常数 head=rear=a;添加元素:scanf("%d",rear-a==N?rear=a:++rear);删除元素:head-a==N?head=a:head++;当然要检查队列是否溢出,可...

设一循环队列queue,只有头指针front,不设尾指针,另设一个内含元素个数...
解:用一个循环数组Queue[0,n-1]表示该循环队列,头指针为front,计数器count用来记录队列中结点的个数。(1)入队算法:void inqueue(int x){ int temp;if (count==n)printf(" 队列上溢出\\n");else { count++ temp=(front+count)%n;Queue[temp]=x } } (2)出队算法:int outqueue(...

急求!用C语言编写数三退一的程序
用队列做,先把500个小孩入队,每数一个数就让头一个出队,再让他从尾巴入队,如果数到3你就让他出队而且不要从尾巴入队,最后剩下的就是你要求的了 代码我稍后给出 include<stdio.h> include<stdlib.h> define N 500 \/\/N为小孩数目,可更改 define COUNT 3 \/\/COUNT为计数值,数到第几个出...

用C语言编写队列的各种基本操作,我不是非常明白:注释里有些问题:请大家...
队列中拥有的元素个数为:L=tail-head现要让排头的元素出队,则需将头指针加1。即head=head+1这时头指针向上移动一个位置,指向Q(3),表示Q(3)已出队。见图1 (b)。如果想让一个新元素入队,则需尾指针向上移动一个位置。即tail=tail+1这时Q(9)入队,见图1 (c)。当队尾已经处理在最上面...

c语言结构体那块的队列问题。我们书上没有,是能给我讲讲。把我讲懂我...
你好,队列用简单的话讲就是一个数组,这个数组是先进先出的。队列包含两个属性,一个叫head,head指向队头,另一个叫tail,tail 指向当前的队尾。举个例子:用一个数组q[1...n]来表示一个队列,里面最多放n-1个元素,各元素的位置为:head,head+1,...,tail-1,在最后一个位置要进行圈...

当利用大小为n的数组顺序存储一个队列时
C:n D:n+1 因为队列的头指针指向的是第一个元素的前一个结点 ,而不是指向第一个元素,因此队列的头指针要占用一个结点长度,所以队列的长度就是n-1; 答案是B n-1假设数组是type array[n]type* front,*rear;front=rear=array;入队操作*rear=x;rear++;出队操作front++;数组下标最大...

关于数据结构的问题,用C语言描述
关于数据结构的问题,用C语言描述 60 1.设一函数f(x,y)=(1+A*(e^B\/cosθ)*(1+C*(cosψ)^2),其中θ=(π*x)\/180,ψ=(π*y)\/180,参数A=-0.5,B=-0.4,C=-0.1。x从0变化到89,步长为1,y从0变化到359,步长为1。采用一种数据结... 1. 设一函数 f(x,y)=(1+A*(e^B\/cosθ)*(1...

相似回答