1. 程式人生 > >鏈佇列的初始化,入隊,出隊,計算隊的長度,遍歷鏈隊銷燬佇列

鏈佇列的初始化,入隊,出隊,計算隊的長度,遍歷鏈隊銷燬佇列

#include "stdio.h" #include "stdlib.h" typedef struct node{ int data; struct node *next; }*pnode; typedef struct queue{ pnode front; pnode rear; }*pqueue; //初始化佇列 pqueue init(pqueue p) { p = (pqueue)malloc(sizeof(struct queue)); p->front = p->rear = NULL; printf("初始化佇列已經成功!\n"); return p; } //判斷佇列是否為空 void empty(pqueue p) { if (p->rear==NULL) printf("佇列為空!\n"); else printf("佇列不為空!\n"); } //入隊操作 int enqueue(pqueue p) { pnode q; q = (pnode)malloc(sizeof(struct node)); printf("請輸入你想入隊的資料:\n"); scanf("%d",&q->data); if (p->front == p->rear&&p->rear==NULL) p->front = p->rear = q; else { p->rear->next=q; p->rear = p->rear->next; p->rear->next = NULL; } return 0; } //出隊操作 int delqueue(pqueue p) { if (p->rear==NULL) printf("佇列為空!\n"); else if ( p->front==p->rear&&p->rear != NULL) { printf("出隊的資料是%d\n", p->front->data); p->front = p->rear = NULL; } else { printf("你要出隊的資料是:"); printf("%d\n",p->front->data); p->front = p->front->next; } return 0; } //遍歷鏈隊 void show(pqueue p) { pnode f,r; f = r = (pnode)malloc(sizeof(struct node)); f= p->front; r = p->rear; if (r == NULL) printf("佇列為空!\n"); else while (f != NULL) { printf("%d ",f->data); f = f->next; } printf("\n"); } //計算鏈隊的長度 void sumqueue(pqueue p) { int k = 0; pnode f, r; f = r = (pnode)malloc(sizeof(struct node)); f = p->front; r = p->rear; if (r == NULL) printf("佇列的長度是:0\n"); else while(f!= NULL){ k++; f = f->next; } printf("佇列的長度是:%d\n",k); } //銷燬佇列 void desqueue(pqueue p) { if (p->front == p->rear == NULL) printf("佇列為空"); else if (p->rear == p->front != NULL) free(p); else while (p->front != NULL) { free(p->front); p->front = p->front->next; } printf("佇列已經銷燬!\n"); } //主函式 int main() { pqueue p; p = NULL; int n; do{ printf("***************************\n"); printf("1.初始化佇列\n2.判斷佇列是否為空\n3.入隊操作\n4.出隊操作\n5.遍歷佇列中的元素\n6.輸出佇列的長度\n7.銷燬佇列\n8.退出程式\n"); printf("***************************\n"); printf("請輸入你的選擇!\n"); scanf("%d", &n); switch (n){ case 1: p=init(p); break; case 2: empty(p); break; case 3: enqueue(p); break; case 4: delqueue(p); break; case 5: show(p); break; case 6: sumqueue(p); break; case 7: desqueue(p); break; case 8: break; default : printf("請輸入正確的選擇!\n"); } } while (n != 8); printf("程式已結束拜拜!\n"); return 0; }

相關推薦

採用順序儲存實現迴圈佇列初始入隊操作。

//////////////////////下面為迴圈佇列 #include<stdio.h> #include<stdlib.h> #define OVERFLOW -2 #define MAXQSIZE 100  /*佇列的最大長度*/ ty

C語言實現順序佇列初始入隊等操作(三)

佇列是一種只能在隊頭刪除、隊尾插入的線性表,本文實現佇列的順序結構,使用一個結構體包含隊頭指標、隊尾指標、佇列的長度這三個成員。通過malloc函式為佇列開闢一片記憶體,大小為100個單位(100*資料型別所佔位元組),將隊頭指標指向起始地址,隊尾指標也指向起始地址。佇列的

佇列初始入隊計算長度銷燬佇列

#include "stdio.h" #include "stdlib.h" typedef struct node{ int data; struct node *next; }*pnode; typedef struct queue{ pnode front; pno

帶頭結點的迴圈連結串列表示佇列, 並且只設一個指標指向隊尾元素結點 試編寫相應的佇列初始,入佇列佇列的演算法

資料結構演算法題(假設以帶頭結點的迴圈連結串列表示佇列, 並且只設一個指標指向隊尾元素結點(注意不設頭指標) 試編寫相應的佇列初始化,入佇列和出佇列的演算法!) /* 資料結構演算法題

全域性初始變數/全域性未初始變數/全域性靜態變數/區域性變數的儲存位置作用域與生命週期

比如如下程式程式碼片段 int a = 0; char *p1; static int x = 10; int main(void) { int b = 0; char

1.結構體型別建立 2.結構體初始 3.結構體記憶體對齊 4.位段位段計算機大小。 5.列舉 6.聯合

結構體型別的建立 1.結構體的宣告 結構是一些值的集合,這些值稱為成員變數。每個結構體的成員可以是不同型別的變數。 struct Student { char name[20];//名字 short age;//年齡 char sex[5

靜態初始中不能放入繁重計算否則會變慢!

vat 可變 必須 long sta 直接 示例 填充 images 在類初始化期間計算不可變數據結果,並將結果保存在static final字段中是一種非常常見的做法。實際上,這正是靜態初始化器的設計目標。 以下是在初始化時構建一些靜態表的典型示例: public cl

已知兩個連結串列A和B分別表示兩個集合其元素遞增排列。請設計一個演算法用於求A與B的交集並存放在A連結串列中。

語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li

a=[123456]用程式碼求a裡面三個數字組合並求組合裡面的最大數如可以組成123456125634563412561234341256345612。

這個題目主要用到迴圈、字串拼接和排序,程式碼如下: a = [12,34,56] d = []  #儲存新的list for i in a:   for j in a:     for k in a:       if (i != j) and (j != k) and (i != k)

a=[123456]用代碼求a裏面三個數字組合並求組合裏面的最大數如可以組成123456125634563412561234341256345612。

eve rev 重復 最大 字符串拼接 代碼 lis end pen 這個題目主要用到循環、字符串拼接和排序,代碼如下: a = [12,34,56] d = [] #保存新的list for i in a:   for j in a:     for k in a:  

VS程式設計C#彈窗顯示欄位資訊分行增加空格的一種方法。

‘\n’是換行; “    ”是填充的空格; aaaa是程式中定義的 int  資料,也可以是其它型別的資料; 注意各自的符號。最後一項可以不要,  MessageBox.Show("資料匯入完成"

springboot~rabbitmq的佇列初始和繫結

配置檔案,在rabbit中自動建立exchange,queue和繫結它們的關係 程式碼裡初始化exchange 程式碼裡初始化queue 程式碼裡繫結exchange,queue和routekey 配置檔案,直接宣告vhost 程式碼裡初始化exchange /** * rabbitMq裡初始

spring security 中spring bean組成的過濾器如何初始

pring security 中spring bean組成的過濾器鏈如何初始化的 spring security 框架的安全是基於過濾器鏈的,但此filter是被spring容器託管的. 一般我們會在web.xml檔案中配置一個代理過濾器: <filter>

“黑馬程式設計師”從鍵盤接受一個數字列出該數字的中文表示格式 例如: 鍵盤輸入123打印一二三 鍵盤輸入3103打印三一零三

package com.itheima; import java.util.*; /**  * 第二題:從鍵盤接受一個數字,列出該數字的中文表示格式          例如:          鍵盤輸入123,打印出一二三          鍵盤輸入3103,打印出三一零三

輸入一個奇數n打印一個n*n的矩陣每個數字是從1到n*n的整數要使每一行每一列的數字之和都相等

#include<stdio.h> int a[1000][1000]; int main() {     int n,i,j;     scanf("%d",&n);     a[0][n/2]=1;     for(i=0;i>n;i++){

一個一維維陣列中只有1和-1實現程式求和為0的最長子串長度並在註釋中給時間和空間複雜度

這是一個比動態規劃更簡單的解法。 思路就是在i從0到n,計算sum(i),sum(i)表示從0到i的元素之和。並儲存在字典dic中,value是索引i,在往後的遍歷中每得到一個sum(i)就檢視dic的keys是否已有此sum(i)值,如果有則用當前i位置減去儲存的i,並與

【比原初始時生成的配置檔案在哪兒

作者:freewind比原專案倉庫:https://github.com/Bytom/bytom人們常說,“閱讀原始碼”是學習程式設計的一種重要方法。作為程式設計師,我們在平時的學習工作中,都應該閱讀過不少原始碼。但是對於大多數人來說,閱讀的可能更多是一些程式碼片斷、示例,或

.map(function(item)...)這個是按hashcode自動怎麽才能按照我想要的順序呢?

alt data html 自動 data- 順序 每次 func -s 上圖是我前端的遍歷代碼。我的item上有一個name的字段,分別是營業執照,稅務登記證和經營許可證,我怎麽設置才能讓函數每次遍歷的時候按照這個順序遍歷,而不是item自帶的順序呢?

Given a string, find the length of the longest substring without repeating characters.(給定一個字符串找到最長的子串的長度這個子串不存在重復的字符。 )

長度 index val color arraylist pub 翻譯 buffer int Given a string, find the length of the longest substring without repeating characters.