<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      C語言【數據結構】線性表--隊列

      順序隊列--循環隊列

      sequeue.h
      #define N 5
      
      typedef int data_type;
      
      typedef struct{
      	data_type data[N];
      	int front, rear; // front:隊頭  rear:隊尾的下一個節點
      }sequeue;
      
      sequeue * queue_create();
      int enqueue(sequeue * q, data_type value);
      data_type dequeue(sequeue * q);
      int queue_empty(sequeue * q);
      int queue_full(sequeue * q);
      int queue_clear(sequeue * q);
      int queue_free(sequeue * q);
      
      sequeue.c
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include "sequeue.h"
      sequeue * queue_create(){
      	sequeue * q;
      	q = (sequeue *)malloc(sizeof(sequeue));
      	if(q==NULL){
      		printf("%s\n", "malloc failed");
      		return NULL;
      	}
      	memset(q->data, 0, sizeof(q->data));
      	q->front = 0;
      	q->rear = 0;
      	return q;
      }
      
      int enqueue(sequeue * q, data_type value){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
          // 循環隊列
      	if((q->rear+1)%N == q->front){
      		printf("%s\n", "queue is full");
      		return -1;
      	}
      	q->data[q->rear] = value;
          // 循環隊列
      	q->rear = (q->rear+1)%N;
      	return 0;
      }
      
      data_type dequeue(sequeue * q){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
      	if(q->front == q->rear){
      		printf("%s\n", "queue is emprty");
      		return -1;
      	}
      	data_type data;
      	data = q->data[q->front];
      	q->front = (q->front+1)%N;
      	return data;
      }
      
      int queue_empty(sequeue * q){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
      	return (q->front == q->rear ? 1 : 0);
      }
      int queue_full(sequeue * q){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
      	if((q->rear+1)%N == q->front){
      		return 1;
      	}
      	return 0;
      }
      int queue_clear(sequeue * q){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
      	q->rear = q->front = 0;
      	return 0;
      }
      int queue_free(sequeue * q){
      	if(q==NULL){
      		printf("%s\n", "queue is NULL");
      		return -1;
      	}
      	free(q);
      	q=NULL;
      	return 0;
      }
      
      test.c
      #include <stdio.h>
      #include <stdlib.h>
      #include "sequeue.h"
      
      int main(int argc, char const *argv[]){
      	sequeue * q;
      	data_type data;
      	q = queue_create();
      	enqueue(q,10);
      	enqueue(q,20);
      	enqueue(q,30);
      	queue_clear(q);
      	enqueue(q,40);
      	enqueue(q,50);
      	enqueue(q,60);
      	enqueue(q,70);
      
      	while(!queue_empty(q)){
      		data = dequeue(q);
      		printf("dequeue: %d\n", data);
      	}
      	queue_clear(q);
      	queue_free(q);
      	return 0;
      }
      

      鏈式隊列

      linkqueue.h
      typedef int data_type;
      
      typedef struct node{
      	data_type data;
      	struct node * next;
      }linknode;
      
      typedef struct{
      	linknode * front;
      	linknode * rear;
      }linkqueue;
      
      linkqueue * queue_create();
      int enqueue(linkqueue * q, data_type value);
      data_type dequeue(linkqueue * q);
      int queue_empty(linkqueue * q);
      int queue_free(linkqueue * q);
      int queue_clear(linkqueue * q);
      
      linkqueue.c
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>
      #include "linkqueue.h"
      
      linkqueue * queue_create(){
      	linkqueue * q;
      	q = (linkqueue *)malloc(sizeof(linkqueue));
      	if(q==NULL){
      		printf("%s\n", "malloc failed\n");
      		return NULL;
      	}
      
      	q->front = q->rear = (linknode *)malloc(sizeof(linknode));
      	if(q->front==NULL){
      		printf("%s\n", "malloc failed\n");
      		return NULL;
      	}
      	q->front->data = 0;
      	q->front->next = NULL;
      	return q;
      }
      
      int enqueue(linkqueue * q, data_type value){
      	// ...省略q==NULL校驗
      
      	// 建立新節點
      	linknode * p;
      	p = (linknode *)malloc(sizeof(linknode));
      	if(p == NULL){
      		printf("%s\n", "malloc failed");
      		return -1;
      	}
      	p->data = value;
      	p->next = NULL;
      
      	// 將新節點追加到鏈表
      	q->rear->next = p;
      
      	// 修改隊列的rear指向新節點
      	q->rear = p;
      
      	return 0;
      }
      
      int dequeue(linkqueue * q){
      	// ...省略q==NULL校驗
      
      	// H:隊頭元素
      	data_type data;
      	linknode * H;
      	H = q->front->next;
      	data = H->data;
      
      	// 只有一個隊元素
      	if(H->next == NULL){
      		q->front->next = NULL;
      		q->rear = q->front;
      		free(H);
      		H = NULL;
      		return data;
      	}
      	
      	// 多個隊元素
      	q->front->next = H->next;
      	free(H);
      	H = NULL;
      	return data;
      }
      
      int queue_empty(linkqueue * q){
      	// ...省略q==NULL校驗
      
      	return (q->front == q->rear ? 1 : 0);
      }
      int queue_free(linkqueue * q){
      	// ...省略q==NULL校驗
      
      	linknode * s;
      	while(q->front){
      		s = q->front;
      		q->front = s->next;
      		printf("free: %d\n", s->data);
      		free(s);
      	}
      	free(q);
      	q = NULL;
      	return 0;
      }
      int queue_clear(linkqueue * q){
      	// ...省略q==NULL校驗
      	linknode * p;
      	while(q->front->next != NULL){
      		p = q->front;
      		q->front = p->next;
      		printf("clear: %d\n", p->data);
      		free(p);
      	}
      	return 0;
      }
      
      test.c
      #include <stdio.h>
      #include <stdlib.h>
      #include "linkqueue.h"
      
      int main(int argc, char const *argv[]){
      	linkqueue * q;
      	q = queue_create();
      	enqueue(q,10);
      	enqueue(q,20);
      	enqueue(q,30);
      	enqueue(q,40);
      
      	while(!queue_empty(q)){
      		printf("dequeue: %d\n", dequeue(q));
      	}
      	
      	// queue_free(q);
      
      	queue_clear(q);
      	enqueue(q,40);
      	while(!queue_empty(q)){
      		printf("dequeue: %d\n", dequeue(q));
      	}
      	return 0;
      }
      
      posted @ 2023-10-15 21:49  揚帆去遠航  閱讀(61)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 女人的天堂A国产在线观看| 91热在线精品国产一区| 2022最新国产在线不卡a| 久久精品国产www456c0m| 亚洲国产精品久久久久4婷婷| 随州市| 久久99久久99精品免视看国产成人| 老色鬼永久精品网站| 久久人人爽人人爽人人av| 国产成人午夜在线视频极速观看| 欧洲亚洲精品免费二区| 偷窥少妇久久久久久久久| 激情综合网一区二区三区| 国产高清自产拍AV在线| 日韩激情无码免费毛片| 亚洲熟妇自偷自拍另亚洲| 久久精品国产成人午夜福利| 伊人无码精品久久一区二区| 亚洲日本精品一区二区| 国产极品粉嫩尤物一区二区| 国产精品中文一区二区| 国产99在线 | 免费| 日本中文字幕有码在线视频| 色欲狠狠躁天天躁无码中文字幕| 久久精品国产99久久久古代| a国产一区二区免费入口| 动漫AV纯肉无码AV电影网| 丝袜老师办公室里做好紧好爽| 成人午夜大片免费看爽爽爽| 成人网站免费观看| 亚洲熟妇色自偷自拍另类| 九九热在线精品视频首页| 国产成人亚洲综合色婷婷秒播| 无码国内精品久久人妻蜜桃| 国产成人精品无缓存在线播放| 色狠狠色婷婷丁香五月| 亚洲国产日韩a在线播放| 欧美在线观看www| 亚洲性美女一区二区三区| 中文字幕无码中文字幕有码a| 亚洲欧洲精品一区二区|