国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【數(shù)據(jù)結構—隊列的實現(xiàn)】

這篇具有很好參考價值的文章主要介紹了【數(shù)據(jù)結構—隊列的實現(xiàn)】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔

文章目錄

前言

一、隊列

1.1隊列的概念及結構

二、隊列的實現(xiàn)

2.1頭文件的實現(xiàn)—Queue.h

2.2源文件的實現(xiàn)—Queue.c

2.3源文件的測試—test.c

三、測試隊列實際數(shù)據(jù)的展示

3.1正常隊列的出入

3.2入隊列的同時存在出隊列

總結


前言

世上有兩種耀眼的光芒,一種是正在升起的太陽,一種是正在努力學習編程的你!一個愛學編程的人。各位看官,我衷心的希望這篇博客能對你們有所幫助,同時也希望各位看官能對我的文章給與點評,希望我們能夠攜手共同促進進步,在編程的道路上越走越遠!


提示:以下是本篇文章正文內容,下面案例可供參考

一、隊列

1.1隊列的概念及結構

隊列:只允許在一端進行插入數(shù)據(jù)操作,在另一端進行刪除數(shù)據(jù)操作的特殊線性表,隊列具有先進先出FIFO(First In First Out)

入隊列:進行插入操作的一端稱為隊尾

出隊列:進行刪除操作的一端稱為隊頭

【數(shù)據(jù)結構—隊列的實現(xiàn)】,數(shù)據(jù)結構與算法,數(shù)據(jù)結構,c語言,隊列

二、隊列的實現(xiàn)

隊列(先進先出)有三種實現(xiàn)方案:數(shù)組、單向鏈表、雙向鏈表
數(shù)組:隊列是對尾入,對頭出,但是數(shù)組尾插還可以,但是頭刪還得挪動數(shù)據(jù),所以非常不方便的
單鏈表:單鏈表尾插入隊列方便,頭刪也方便

【數(shù)據(jù)結構—隊列的實現(xiàn)】,數(shù)據(jù)結構與算法,數(shù)據(jù)結構,c語言,隊列

2.1頭文件的實現(xiàn)—Queue.h

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>

typedef int QDataType;

typedef struct QueueNode
{
	QDataType val;
	struct QueueNode* next;
}QNode;



//尾入(*單向鏈表,我們要找尾,進行尾插,所以我們需要把頭節(jié)點和尾節(jié)點的指針傳進來,
//但是要進行頭刪,得頻繁改變第一個節(jié)點得地址,所以我們得用二級指針,這樣就更麻煩了)
//void QueuePush(QNode* phead,QNode* ptail, QDataType x);
頭出
//void QueuePop(QNode* phead);


typedef struct Queue
{
	QNode* phead;
	QNode* ptail;
	int size;
}Queue;

//尾入(我們把第一個節(jié)點和尾節(jié)點放入一個結構體中,
//然后可以改變結構體成員,就可以實現(xiàn)第一個節(jié)點地址的頻繁的更換)
void QueuePush(Queue* pq, QDataType x);
//頭出
void QueuePop(Queue* pq);

//初始化
void QueueInit(Queue* pq);
//銷毀
void QueueDestroy(Queue* pq);

//取隊頭的數(shù)據(jù)
QDataType QueueFront(Queue* pq);
//取隊尾的數(shù)據(jù)
QDataType QueueBack(Queue* pq);

//獲取隊列中有效元素個數(shù)
int QueueSize(Queue* pq);
//檢測隊列是否為空,如果為空返回非零結果,如果非空返回0 
bool QueueEmpty(Queue* pq);

2.2源文件的實現(xiàn)—Queue.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "queue.h"

//尾入(我們把第一個節(jié)點和尾節(jié)點放入一個結構體中,
//然后可以改變結構體成員,就可以實現(xiàn)第一個節(jié)點地址的頻繁的更換)
void QueuePush(Queue* pq, QDataType x)
{
	assert(pq);
	QNode* newnode = (QNode*)malloc(sizeof(QNode));
	if (newnode == NULL)
	{
		perror("malloc fail");
		return;
	}

	newnode->val = x;
	newnode->next = NULL;

	if (pq->ptail == NULL)
	{
		pq->phead = pq->ptail = newnode;
	}
	else
	{
		pq->ptail->next = newnode;
		pq->ptail = newnode;
	}
	pq->size++;
}
//頭出
void QueuePop(Queue* pq)
{
	assert(pq);
	//如果只剩一個節(jié)點的時候,phead往后走,此時ptail就是野指針
	assert(pq->phead);

	QNode* del = pq->phead;
	pq->phead = pq->phead->next;
	free(del);
	del = NULL;

	if (pq->phead == NULL)
	{
		pq->ptail = NULL;
	}
	pq->size--;
}

//初始化
void QueueInit(Queue* pq)
{
	assert(pq);
	pq->phead = pq->ptail = NULL;
	pq->size = 0;
}

//銷毀
void QueueDestroy(Queue* pq)
{
	assert(pq);
	QNode* cur = pq->phead;
	while (cur)
	{
		QNode* next = cur->next;
		free(cur);
		cur = next;
	}
	pq->phead = pq->ptail = NULL;
}

//取隊頭的數(shù)據(jù)
QDataType QueueFront(Queue* pq)
{
	assert(pq);
	assert(pq->phead);
	return pq->phead->val;
}
//取隊尾的數(shù)據(jù)
QDataType QueueBack(Queue* pq)
{
	assert(pq);
	assert(pq->ptail);
	return pq->ptail->val;
}

//獲取隊列中有效元素個數(shù)
int QueueSize(Queue* pq)
{
	assert(pq);
	return pq->size;
}
//檢測隊列是否為空,如果為空返回非零結果,如果非空返回0 
bool QueueEmpty(Queue* pq)
{
	assert(pq);
	
	return pq->phead == NULL;
}

2.3源文件的測試—test.c

#include "queue.h"

int main()
{
	Queue q;
	QueueInit(&q);
	QueuePush(&q, 1);
	QueuePush(&q, 2);
	QueuePush(&q, 3);
	QueuePush(&q, 4);
	QueuePush(&q, 5);
	while (!QueueEmpty(&q))
	{
		printf("%d ", QueueFront(&q));
		QueuePop(&q);
	}


	QueueDestroy(&q);
	return 0;
}

三、測試隊列實際數(shù)據(jù)的展示

1、出入隊列的方式:隊尾插入數(shù)據(jù),對頭刪除數(shù)據(jù)

2、出隊列和入隊列的關系:一對一的

3.1正常隊列的出入

【數(shù)據(jù)結構—隊列的實現(xiàn)】,數(shù)據(jù)結構與算法,數(shù)據(jù)結構,c語言,隊列

3.2入隊列的同時存在出隊列

【數(shù)據(jù)結構—隊列的實現(xiàn)】,數(shù)據(jù)結構與算法,數(shù)據(jù)結構,c語言,隊列


總結

好了,本篇博客到這里就結束了,如果有更好的觀點,請及時留言,我會認真觀看并學習。
不積硅步,無以至千里;不積小流,無以成江海。文章來源地址http://www.zghlxwxcb.cn/news/detail-766073.html

到了這里,關于【數(shù)據(jù)結構—隊列的實現(xiàn)】的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • C語言實現(xiàn)隊列--數(shù)據(jù)結構

    C語言實現(xiàn)隊列--數(shù)據(jù)結構

    ????????????????????????Take your time ! ???????????????????????? ??個人主頁:??????大魔王?????? ??所屬專欄:??魔王的修煉之路–數(shù)據(jù)結構?? 如果你覺得這篇文章對你有幫助,請在文章結尾處留下你的 點贊 ??和 關注 ??,支持一

    2024年02月05日
    瀏覽(13)
  • 隊列--C語言實現(xiàn)數(shù)據(jù)結構

    隊列--C語言實現(xiàn)數(shù)據(jù)結構

    本期帶大家一起用C語言實現(xiàn)隊列?????? 隊列是一種線性數(shù)據(jù)結構,它按照先進先出(FIFO)的原則進行操作??梢园殃犃邢胂蟪膳抨犢I票或者排隊上公交車的隊伍。 順序隊列 由一個連續(xù)的內存區(qū)域組成,可以存儲多個元素。隊列有兩個指針,分別指向隊頭(Front)和隊尾(

    2024年02月16日
    瀏覽(22)
  • 數(shù)據(jù)結構——隊列(C語言實現(xiàn))

    數(shù)據(jù)結構——隊列(C語言實現(xiàn))

    隊列是一種特殊的線性結構,數(shù)據(jù)只能在一端插入,數(shù)據(jù)也只能在另一端進行刪除。插入數(shù)據(jù)的那一端稱之為隊尾,插入數(shù)據(jù)的動作稱之為入隊。刪除數(shù)據(jù)的那一端稱之為隊頭,刪除數(shù)據(jù)的動作稱之為出列。隊列遵守的是FIFO原則(Frist In First Out),即先進先出原則。 隊列具

    2024年02月03日
    瀏覽(25)
  • C數(shù)據(jù)結構與算法——隊列 應用(C語言純享版 迷宮)

    C數(shù)據(jù)結構與算法——隊列 應用(C語言純享版 迷宮)

    實驗任務 (1) 掌握順序循環(huán)隊列及其C語言的表示; (2) 掌握入隊、出隊等基本算法的實現(xiàn); (3) 掌握順序循環(huán)隊列的基本應用(求解迷宮通路)。 實驗內容 使用C語言實現(xiàn)順序循環(huán)隊列的類型定義與算法函數(shù); 編寫main()函數(shù)并根據(jù)需要修改、補充相關的類型定義與函數(shù),以實

    2024年02月15日
    瀏覽(25)
  • 【C/C++數(shù)據(jù)結構與算法】C語言棧與隊列

    目錄 一、棧 二、隊列 三、循環(huán)隊列 特性: 順序存儲,后進先出 優(yōu)點是可隨機訪問,尾部增刪效率高 缺點是可能會浪費空間,不知道頭部增刪 特性: 鏈式存儲,先進先出 優(yōu)點是無空間浪費,頭部增刪效率高 缺點是不能隨機訪問,尾部增刪效率低 特性: 順序存儲,先進先

    2024年02月09日
    瀏覽(32)
  • 【數(shù)據(jù)結構與算法】隊列的實現(xiàn)

    【數(shù)據(jù)結構與算法】隊列的實現(xiàn)

    ?? 作者:@ 阿亮joy. ?? 專欄:《數(shù)據(jù)結構與算法要嘯著學》 ?? 座右銘:每個優(yōu)秀的人都有一段沉默的時光,那段時光是付出了很多努力卻得不到結果的日子,我們把它叫做扎根 隊列:只允許在一端進行插入數(shù)據(jù)操作,在另一端進行刪除數(shù)據(jù)操作的特殊線性表,隊列具有先

    2024年02月07日
    瀏覽(52)
  • 【數(shù)據(jù)結構與算法】用隊列實現(xiàn)棧&&用棧實現(xiàn)隊列&&設計循環(huán)隊列

    【數(shù)據(jù)結構與算法】用隊列實現(xiàn)棧&&用棧實現(xiàn)隊列&&設計循環(huán)隊列

    ?? 作者:@ 阿亮joy. ?? 專欄:《數(shù)據(jù)結構與算法要嘯著學》 ?? 座右銘:每個優(yōu)秀的人都有一段沉默的時光,那段時光是付出了很多努力卻得不到結果的日子,我們把它叫做扎根 請你僅使用兩個隊列實現(xiàn)一個后入先出(LIFO)的棧,并支持普通棧的全部四種操作(push、top、

    2024年01月20日
    瀏覽(26)
  • 數(shù)據(jù)結構-隊列(C語言的簡單實現(xiàn))

    數(shù)據(jù)結構-隊列(C語言的簡單實現(xiàn))

    隊列也是一種數(shù)據(jù)結構,隊列也可以用來存放數(shù)字 每次只能向隊列里將入一個數(shù)字,每次只能從隊列里獲得一個數(shù)字 在隊列中,允許插入的一段稱為入隊口,允許刪除的一段稱為出隊口 它的原則是先進先出(FIFO: first in first out),先進入隊列的數(shù)據(jù)先出去,后進入的后出去。

    2024年02月13日
    瀏覽(26)
  • 數(shù)據(jù)結構-隊列的實現(xiàn)(C語言版)

    數(shù)據(jù)結構-隊列的實現(xiàn)(C語言版)

    前言 ? ? ? ? 隊列是一種特殊的線性表,它只允許在一端對數(shù)據(jù)進行插入操作,在另一端對數(shù)據(jù)進行刪除操作的特殊線性表,隊列具有先進先出的(FIFO)的?特性,進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊頭。 ? ? ? ? 隊尾:元素在隊尾入隊。插入操作。

    2024年02月13日
    瀏覽(18)
  • 【算法與數(shù)據(jù)結構】隊列的實現(xiàn)詳解

    【算法與數(shù)據(jù)結構】隊列的實現(xiàn)詳解

    隊列的概念: 隊列:只允許在一端進行插入數(shù)據(jù)操作,在另一端進行刪除數(shù)據(jù)操作的特殊線性表,隊列具有先進先出FIFO(First In First Out) 新添加的元素添加到隊尾,只能從隊頭取出元素。 入隊列:進行插入操作的一端稱為隊尾 出隊列:進行刪除操作的一端稱為隊頭 隊列特征如

    2024年04月13日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包