連結串列初解(四)——佇列的入隊和出隊
自己複習了一下簡單佇列的基本操作,其中要注意的是隊頭和隊尾要始終保持位置正確~還是老習慣,上程式碼+註釋啦~
Code:
#include<iostream> using namespace std; typedef struct node { int data; struct node *next; }node;//定義指標結構 typedef struct queue { node *first, *rear;//定義隊頭、隊尾指標。 }queue; //入隊 queue *insert(queue *Q, int x) { node *i; //先建立要入隊的節點。 i = (node *)malloc(sizeof(node)); i->data = x; if(Q == NULL) {//如果佇列結構體為空(還未插入值),則建立佇列結構體。 Q = (queue *)malloc(sizeof(queue)); Q->first = Q->rear = i; Q->rear->next = NULL; } else {//按順序將節點入隊。 Q->rear->next = i; Q->rear = i; i->next = NULL; } return Q; } //出隊 queue *del(queue *Q) { node *temp; //先定義一箇中間節點,以便將隊頭處理完後將原隊頭空間釋放。 if(Q->first == NULL) {//如果佇列唯空,則報錯退出。 printf("Queue is null !"); return NULL; } else {//和單鏈表刪除頭節點的處理一樣 temp = Q->first; Q->first = Q->first->next; free(temp);//別忘了釋放哦~ } return Q; } //列印佇列 void print(queue *Q) {//與單鏈表的處理一樣 node *temp; temp = Q->first; printf("Output the Queue : "); while(1) { if(temp == NULL) break; if(temp != Q->rear) printf("%d<-", temp->data); else printf("%d\n", temp->data); temp = temp->next; } } int main() { queue *Q = NULL; int x; printf("Insert Queue (end with 0) : "); //插入佇列 while(scanf("%d", &x) != EOF && x != 0) { Q = insert(Q, x); } print(Q); //出隊 printf("\nAfter deleting~\n"); Q = del(Q); print(Q); printf("\n"); return 0; }
執行示例:
Ps:僅供參考哈~
相關推薦
連結串列初解(四)——佇列的入隊和出隊
自己複習了一下簡單佇列的基本操作,其中要注意的是隊頭和隊尾要始終保持位置正確~還是老習慣,上程式碼+註釋啦~ Code: #include<iostream> using namespace std; typedef struct node { int da
程式設計師程式碼面試指南 —— 連結串列問題(四)
題目:將單鏈表的每K個節點之間逆序 描述:給定一個單鏈表的頭結點head,實現一個調整單鏈表的函式,使得每K個節點之間逆序,如果最後不夠K個節點一組,則不調整最後幾個節點 例如: 連結串列 1—>2—>3—>4—>5—>6—>7—>8—>nul
連結串列初解(一)——單鏈表的建立、刪除、插入、測長、排序、逆置
由於考試需要,複習一下單鏈表的各種常見操作,直接上程式碼+註釋,需要的可以參考下哈~ Code: #include<iostream> using namespace std; typedef struct student { int data; str
資料結構(四)佇列
一、基本概念 1、特點: 在佇列頭部進行刪除,在佇列的尾部進行插入操作 2、主要實現: 使用迴圈陣列 使用連結串列 3、關係圖: 二、Queue public interface Queue<E> extends
資料結構與演算法之連結串列篇(上)
連結串列作為一種基礎的資料結構之一,我們會常常使用到它,接下來就讓我們一起學習吧。 1、連結串列的經典應用場景: LRU快取淘汰演算法。 2、快取是一種提高資料讀取效能的技術,在硬體設計、軟體開發中都有著非常廣泛的應用,比如常見的CPU快取、資料庫快取、瀏覽器快取等等。
資料結構與演算法之連結串列篇(下)
Q:如何輕鬆寫出正確的連結串列程式碼? 總結起來,就是投入時間+技巧; 一、投入時間: 只要願意投入時間,大多數人都是可以學會的,比如說,如果你真能花上一個週末或者一整天時間,就去寫連結
程式設計師程式碼面試指南 —— 連結串列問題(三)
題目:複製含有隨機指標節點的連結串列 描述:有一種連結串列節點類描述如下: public class Node { public int value; public Node next; public Node rand; public Node(int data){ this.value
程式設計師程式碼面試指南 —— 連結串列問題(二)
題目:給定一個連結串列的頭節點head,請你判斷是否為迴文結構 例如:1 —> 2 —> 1 ture 1 —> 2 —> 2 —> 1 true 1 —> 2 —> 3 flase 思路:可以使用棧這種資料結構,可以將整個單向連結串列分為前半區和後
程式設計師程式碼面試指南 —— 連結串列問題(一)
注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 題目一:在單鏈表和雙鏈表中刪除倒數第K個節點 描述: 分別實現兩個函式,一個可以刪除單鏈表中倒數第K個節點,另一個可以刪除雙鏈
C語言 ,單鏈表實現佇列(初始化,入隊,出隊,元素個數,隊首元素,是否為空)
單鏈表實現佇列: 連結串列為空的判斷條件:pQueue->pFront==pQueue->pRear或者若結構體中存在數的個數時,判斷pQueue->size==0,即元素個數為0 標頭檔案:佇列.h #pragma once #include<
單向連結串列反轉(倒置)問題
今天遇到單向連結串列的反轉的問題,於是靜下心來好好想了一番。 解題思路如下圖: 假設當前建立好的連結串列如下: 首先讓頭節點與第一個元素節點斷開,但是要注意在斷開之前需要用p指標指向第一個元素節點來儲存第一個元素節點的位置,然後再斷開。在這裡有一個指標
面向物件之Python的連結串列實現(二)迴圈連結串列
接上一章的練習,這裡接著實現單鏈表的變型——傳說中的迴圈單鏈表。給出一個簡單的類,構造4個功能並例項化測試。 在下一篇文章中將會關注一個比較tricky的問題:如何判斷連結串列有環?以及求出環長度 # -*- coding: utf-8 -*- """ Created
靜態記憶體分配-連結串列管理(1)單向量表講解
單向連結串列 單向量表有頭節點 和節點組成,頭節點主要是管理連結串列使用,節點組成資料。 資料結構 **last指向尾節點的Next指標,在節點尾部插入節點時,直接調整頭節點的last內容的指向即可在尾部插入。first指標指向連結串列的首節點。
連結串列求和(LintCode)
題目來源:LintCode 原題地址:http://www.lintcode.com/zh-cn/problem/add-two-numbers/ 題目: 你有兩個用連結串列代表的整數,其中每
程式設計練習:連結串列習題(上)
(1)題目:輸入兩個連結串列,找出它們的第一個公共節點。 思路: 1)計算出連結串列1的長度; 2)計算出連結串列2的長度; 3)計算出連結串列1和連結串列2的長度差dif;
在O(1)時間複雜度刪除連結串列節點(372)
資料結構—線性結構—連結串列:(在O(1)時間複雜度刪除連結串列節點)一、題目:給定一個單鏈表中的一個等待被刪除的節點(非表頭或表尾)。請在在O(1)時間複雜度刪除該連結串列節點。樣例:Linked l
連結串列學習(3)
1、線性結構與非線性結構,主要看元素之間的關係。若是一對一關係就是線性表,如果不是一對一就是非線性。 2、LS=((a,b,c),(d,e,f)); tail(LS)=((d,e,f)); head
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。 (4)求二叉樹的所有葉子及結點總數。
(1)建立二叉樹的二叉連結串列。 (2)寫出對用二叉連結串列儲存的二叉樹進行先序、中序和後序遍歷的遞迴和非遞迴演算法。 (3)寫出對用二叉連結串列儲存的二叉樹進行層次遍歷演算法。(4)求二叉樹的所有葉子及結點總數。 include<stdio.h> #inclu
soapui接口性能測試(四)---- 輸出報告和統計
color table repo line src testin edi set diag 好的,您已經運行了LoadTest,現在需要創建一些報告或導出收集的數據以進行更詳細的分析。有幾個選項可供您使用,我們將按順序查看:導出統計表的數據(僅限開源)。從統計圖導出數據。在
Spring入門(四)— 整合Struts和Hibernate
patch pan area src 選擇 roo 們的 void prototype 一、Spring整合Struts 1. 初步整合 只要在項目裏面體現spring和 strut即可,不做任何的優化。 struts 環境搭建 創建action publ