队列之元素查找
View Code
#include <stdlib.h> #include <stdio.h> #include <assert.h> #define Elem int typedef struct Node{ int elem; struct Node *next; }Node; typedef struct Quece{ Node *front; Node *rear; }Quece; Quece *initQuece(){ Quece *T=(Quece *)malloc(sizeof(Quece)); if(!T) exit(0); Node *node=(Node*)malloc(sizeof(Node)); if(!node) exit(0); T->front=T->rear=node; node->elem=0; node->next=NULL; return T; } void insertQuece(Quece *Q,Elem value){ Node *e=(Node *)malloc(sizeof(Node)); if(!e) exit(0); Q->rear->next=e; Q->rear=Q->rear->next; e->elem=value; } deleteQuece(Quece *Q,int A[],int i){ assert(Q); A[i]=Q->front->next->elem; Node *V=Q->front->next; Q->front->next=V->next; free(V); } int main(){ Quece *Q; Q=initQuece(); insertQuece(Q,1); insertQuece(Q,2); insertQuece(Q,3); insertQuece(Q,4); int n=4;int i=0; int A[4]; for(;i<n;i++){ deleteQuece(Q,A,i); printf("%d\n",A[i]); } free(Q); return 0; }
好久没写队列了,居然不会写了。
开始时rear和front指向一个头指针,然后front->next指向队列的头一个指针,rear指向队尾。
当front=rear时队列为空。
题目:给一个队列,只需遍历一次,找出倒数第m的元素。
解决:设置一个指针数组,在一个遍历的同时,让相应的数组指向对应的节点,这样一次遍历就可以知道其个数。

浙公网安备 33010602011771号