
正文
c语言中队列移除函数 c 语言 队列
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言,用数组实现队列的入队,出队函数编程
这样的话应该符合你的要求:
#includestdio.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加入队列
}
//验证加入队列的元素c语言中队列移除函数,将队列中的元素按照输入的顺序输出:
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];//注意c语言中队列移除函数,这里的函数始终return queue[1];这里是和将普通数组中的元素输出最大的不同之处。c语言中队列移除函数!!!!!!
}
void del(int queue[])
{
for(int i=2;i=end;i++)
{
queue[i-1]=queue[i];
}
queue
c语言中队列移除函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c 语言 队列、c语言中队列移除函数的信息别忘了在本站进行查找喔。
=0;//将删除后的地方置0end--;
}
相关问答
Q1: C语言队列的插入与删除
#include stdio.h
#include stdlib.h
#define MAXQSIZE 100 //最大队列长度
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct
{
int *base;
int front;
int rear; //尾指针,若队列不空,指向队列尾元素的下一个位置
}SqQueue;
void InitQueue(SqQueue *Q)
{
Q-front = Q-rear = 0;
if (Q-base == NULL) {
Q-base = (int*)malloc(sizeof(int)* MAXQSIZE);
}
}
void DesQueue(SqQueue *Q) {
free(Q-base);
Q-base = NULL;
Q-front = Q-rear = 0;
}
int QueueLength(SqQueue *Q)
{
if (Q-base == NULL) return ERROR;
return (Q-rear - Q-front + MAXQSIZE) % MAXQSIZE;
}
void display(SqQueue *Q)
{
int i;
if (Q-base == NULL) {
printf("\n ERROR ");
return;
}
for (i = Q-front; i != Q-rear; i++) {
i = i % MAXQSIZE;
printf("%3d", Q-base[i]);
}
printf("\n");
}
int InQueue(SqQueue *Q, int e)
{
if (Q-base == NULL) return ERROR;
if ((Q-rear + 1) % MAXQSIZE == Q-front)
return OVERFLOW;
Q-base[Q-rear] = e;
Q-rear = (Q-rear + 1) % MAXQSIZE;
return OK;
}
int DeQueue(SqQueue *Q, int m)
{
int i = 0;
if (Q-base == NULL) return ERROR;
if (Q-front == Q-rear)
return ERROR;
while (i != m Q-front != Q-rear)
{
printf("\n%dDeleted\n", Q-base[Q-front]);
Q-front = (Q-front + 1) % MAXQSIZE;
i++;
}
if (i != m) {
printf("\n ERROR ");
return ERROR;
}
return OK;
}
void main()
{
int m, n, d, i;
SqQueue Q = { 0, 0, 0 };
InitQueue(Q);
printf("请输入要插入的元素个数:");
scanf("%d", m);
printf("要插入的元素:");
for (i = 1; i = m; i++)
{
scanf("%d", n);
InQueue(Q, n);
}
printf("插入元素后,队列中的元素为:");
display(Q);
printf("队列长度为:");
printf("%d\n", QueueLength(Q));
printf("输入要删除的元素个数:");
scanf("%d", d);
DeQueue(Q, d);
printf("\n删除元素后,队列中元素为:");
display(Q);
printf("\n");
DesQueue(Q);
}
Q2: 用C语言实现删除环形队列第K个元素
楼主你好。
我现在假设环形队列一定可以找到第k个元素,如下:
void DeleteIndexedNode(DList* thiz, int k){//删除第k个元素
DNode* iter=thiz-first;
DNode* pIter;
int index;//假设队列从1开始编号
if(!iter)//队列为空,取消删除
return;
//若想绕一周不再删除,上面可以if(!iter || k thiz-length) return;//若队列为空或超过一周,取消删除
if( k == 1){//若删除首个节点
thiz-first = iter-next;
thiz-last-next = thiz-first;//DList结构若不是双向链表,应该有一个last指针,提高效率
DestroyDNode(iter);//这个是你自己定制的DNode的析构函数
return;
}
//若删除其他节点
do{
pIter = iter;//pIter指向iter前一个节点,用于帮助析构。
iter = iter-next;
index++;
}while(index k) ;//因为是环形队列,肯定可以找到第k个元素,而且iter不会为NULL
pIter-next = iter-next;//iter的前一个节点的next绕过iter
DestroyDNode(iter);//这个是你自己定制的DNode的析构函数
return;
}
以上函数可以实现删除第K个元素,有什么问题可以再问我。
Q3: c语言队列如何删除任意元素 ??
如果是数组形式存储的队列c语言中队列移除函数,将后续元素前移一个单元c语言中队列移除函数,并将队列计数减1c语言中队列移除函数;
如果是单向链表形式存储的队列,需要得到要删除元素前一个元素的指针,提取要删除元素指针,将前一个元素的后继指针修改成要删除元素的后继指针内容,然后利用前面提取的要删除元素指针将该元素删除。
c语言中队列移除函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c 语言 队列、c语言中队列移除函数的信息别忘了在本站进行查找喔。






