int main(int argc, char *argv[]) { int i, j; int N = atoi(argv[1]); srand(time(NULL)); Q queues[M]; for (i = 0; i < M; ++i) { queues[i] = QUEUEinit(N); } for (i = 0; i < N; ++i) { QUEUEput(queues[rand() % M], i); } for (i = 0; i < M; ++i) { for (j = 0; !QUEUEempty(queues[i]); ++j) { printf("%3d ", QUEUEget(queues[i])); } printf("\n"); } return 0; }
void traverse(link h, void (*visit)(link)) { QUEUEinit(max); QUEUEput(h); while (!QUEUEempty()) { (*visit)(h = QUEUEget()); if (h->l != NULL) QUEUEput(h->l); if (h->r != NULL) QUEUEput(h->r); } }
Item QUEUEget() { if (QUEUEempty()) QUEUEerror("get"); else { head = head % n; return q[head++]; } return 0; }
void traverse(int k) { link t; QUEUEinit(V); QUEUEput(k); while (!QUEUEempty()) if (visited[k = QUEUEget()] == 0) { printf("visit %d\n", k); visited[k] = 1; for (t = adj[k]; t != NULL; t = t->next) if (visited[t->v] == 0) QUEUEput(t->v); } }
int main(int argc, char *argv[]) { int i, j, N = atoi(argv[1]); Q queues[M]; srand(time(NULL)); for (i = 0; i < M; i++) queues[i] = QUEUEinit(N); for (j = 0; j < N; j++) QUEUEput(queues[rand() % M], j); for (i = 0; i < M; i++, printf("\n")) for (j = 0; !QUEUEempty(queues[i]); j++) printf("%3d ", QUEUEget(queues[i])); return 0; }
void DIGRAPHbfsM (Digraph G, Vertex s) { Vertex v, w; cnt = 0; for (v = 0; v < G->V; v++) lbl[v] = -1; QUEUEinit(G->V); lbl[s] = cnt++; QUEUEput(s); while (!QUEUEempty()) { v = QUEUEget(); for (w=0; w < G->V; w++) if (G->Adj[v][w] == 1 && lbl[w] == -1) { lbl[w] = cnt++; QUEUEput(w); } } QUEUEfree(); }
link mergesort(link t) { link u; for (QUEUEinit(N); t != NULL; t = u) { u = t->next; t->next = NULL; QUEUEput(t); } t = QUEUEget(); while (!QUEUEempty()) { QUEUEput(t); t = merge(QUEUEget(), QUEUEget()); } return t; }
void traverse(int k, void(*visit)(int)) { link t; QUEUEinit(); QUEUEput(k); while (!QUEUEempty()) { k = QUEUEget(); if (visited[k] == 0) { (*visit)(k); visited[k] = 1; for (t = adj[k]; t != NULL; t = t->next) { if (visited[t->v] == 0) { QUEUEput(t->v); } } } } }
void DIGRAPHbfsL (Digraph G, Vertex s) { Vertex v; link p; cnt = 0; for (v = 0; v < G->V; v++) lbl[v] = -1; QUEUEinit(G->V); lbl[s] = cnt++; QUEUEput(s); while (!QUEUEempty()) { v = QUEUEget(); for(p=G->adj[v];p!=NULL;p=p->next) if (lbl[p->w] == -1) { lbl[p->w] = cnt++; QUEUEput(p->w); } } QUEUEfree(); }
main(int argc, char *argv[]) { int i, j, N = atoi(argv[1]); Q queues[M]; for (i = 0; i < M; i++) { queues[i] = QUEUEinit(N); } for (i = 0; i < N; i++) { QUEUEput(queues[rand() % M], j); } for (i = 0; i < N; i++) { for (j = 0; !QUEUEempty(queues[i]); j++) { printf("%3d", QUEUEget(queues[i])); } } }