队列之元素查找

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的元素。

解决:设置一个指针数组,在一个遍历的同时,让相应的数组指向对应的节点,这样一次遍历就可以知道其个数。

posted on 2012-06-07 10:31  蓝色守望  阅读(1354)  评论(0)    收藏  举报

导航