作業/數據結構/2023/7/10

1.實現單向鏈表隊列的,創建,入隊,出隊,遍歷,長度,銷毀。

main.c

#include "head.h"int main(int argc, const char *argv[])
{//創建鏈式隊列queue_ptr QL=create_queue();//入棧push(QL, 1000);push(QL, 1001);push(QL, 1002);push(QL, 1003);push(QL, 1004);//遍歷 output(QL);//出隊pop( QL);output(QL);//長度length(QL);//銷毀 freedom(QL);return 0;
}                                     

head.h

#ifndef __HEAD_H__                
#define __HEAD_H__                #include <stdio.h>                
#include <stdlib.h>               
//定義節點中的數據類型            
typedef int datatype;             
//定義節點結構體                  
typedef struct node               
{                                 union                         {                             int len;                  datatype data;            };                            struct node*next;             
}Node;                            //定義鏈式隊列結構體              
typedef struct seq                
{                                 Node *head;                   Node *tail;                   
}queue,*queue_ptr;                //1.創建鏈式隊列                  
queue_ptr create_queue();         
//2.判斷為空操作                  
int empty(queue_ptr QL);          
//3.鏈式隊列入隊                  
int push(queue_ptr QL,datatype e);
//4.鏈式隊列的遍歷                
void output(queue_ptr QL);        
//5,鏈式隊列的出隊只能從對頭刪除  
void pop(queue_ptr QL);           
//6.長度                          
void length(queue_ptr QL);        
//銷毀                            
void freedom(queue_ptr QL);       
#endif                            

?fun.c

 #include "head.h"                                     //1.創建鏈式隊列                                      queue_ptr create_queue()                              {                                                     //申請鏈式隊列的結構體的大小空間                  queue_ptr QL=(queue_ptr)malloc(sizeof(queue));    //判斷鏈式隊列申請節點成功沒有                    if(NULL==QL)                                      {                                                 printf("創建鏈式隊列失敗\n");                 return NULL;                                  }                                                 //申請節點結構體的大小空間                        QL->head=(Node*)malloc(sizeof(Node));             //判斷鏈式隊列節點申請有沒有成功                  if(NULL==QL->head)                                {                                                 printf("節點創建失敗\n");                     free(QL);                                     return NULL;                                  }                                                 //頭節點創建成功                                  QL->head->len=0;//節點長度置0                     QL->head->next=NULL;//節點指針域指向NULL          //鏈式隊列結構體里面的指針指向                    QL->tail=QL->head;                                printf("鏈式隊列創建成功\n");                     return QL;                                        }                                                     //2.判斷為空操作                                      int empty(queue_ptr QL)                               {                                                     if(QL==NULL)                                      {                                                 printf("判空操作失敗\n");                     return -1;                                    }                                                 //當鏈式隊列結構體的指針指向同一個節點            return QL->head==QL->tail;                    }                                                     //3.鏈式隊列入隊                                      int push(queue_ptr QL,datatype e)                     {                                                     if(QL==NULL)                                      {                                                 printf("入隊失敗\n");                         return 0;                                     }                                                 //申請普通節點                                    Node *p=(Node*)malloc(sizeof(Node));              if(NULL==p)                                       {                                                 printf("申請節點失敗\n");                     return 0;                                     }                                                 p->data=e;                                        p->next=NULL;                                     //然后尾插                                        QL->tail->next=p;                                 QL->tail=p;                                       //長度自增                                        QL->head->len++;                                  return 1;                                         }                                                     //4.鏈式隊列的遍歷                                    void output(queue_ptr QL)                             {                                                     if(NULL==QL ||empty(QL))                          {                                                 printf("遍歷失敗\n");                         return ;                                      }                                                 //循環遍歷的指向的指針                            Node* q=QL->head;                                 while(q->next!=NULL)                              {                                                 q=q->next;                                    printf("%d  ",q->data);                       }                                                 printf("\n");                                     }                                                     //5,鏈式隊列的出隊只能從對頭刪除                      void pop(queue_ptr QL)                                {                                                     if(NULL==QL ||empty(QL))                          {                                                 printf("出隊失敗\n");                         return ;                                      }                                                 //定義一個遍歷指向隊頭指針                        Node*p=QL->head->next;                            //頭指針指向下一節點                              QL->head->next=p->next;                           free(p);                                          p=NULL;                                           QL->head->len--;                                  }                                                     //6.長度                                              void length(queue_ptr QL)                             {                                                     if(NULL==QL)                                      {                                                 printf("輸出長度失敗\n");                     return ;                                      }                                                 int len=QL->head->len;                            printf("該順序鏈式隊列的長度為:%d\n",len);        return;                                           }                                                     //銷毀                                                void freedom(queue_ptr QL)                            {                                                     if(NULL==QL)                                      {                                                 printf("銷毀失敗\n");                         return ;                                      }                                                 while(QL->head->next!=NULL)                       {                                                 pop(QL);                                      }                                                 free(QL->head);                                   QL->head=NULL;                                    printf("銷毀成功\n");                             return;                                           
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/43259.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/43259.shtml
英文地址,請注明出處:http://en.pswp.cn/web/43259.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

imx6ull/linux應用編程學習(16)emqx ,mqtt創建連接mqtt.fx

在很多項目中都需要自己的私人服務器&#xff0c;以保證數據的隱私性&#xff0c;這里我用的是emqx。 1.進入emqx官網 EMQX&#xff1a;用于物聯網、車聯網和工業物聯網的企業級 MQTT 平臺 點擊試用cloud 申請成功后可得&#xff1a;&#xff08;右邊的忽略&#xff09; 進入…

告別PS,ChatGPT圖片局部修改,手把手教你成為畫圖高手

大家好&#xff0c;我是YUAN&#xff01; 今天&#xff0c;我要向大家介紹一個能夠點燃創意火花的畫圖設計神器——DALLE編輯器。讓藝術創作&#xff0c;尤其是畫圖變得更加簡單、直觀&#xff0c;甚至可以說是革命性的。 DALLE是什么&#xff1f; DALLE編輯器的問世&#xf…

macOS系統下載navicat安裝包

鏈接: https://pan.baidu.com/s/1SqTIXNL-B8ZMJxIBu1DfIw?pwdc1z8 提取碼: c1z8 安裝后效果

buuctf題目講解-1

一眼就解密 ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 flag{THEFLAGOFTHISSTRING} base家族 base64 加密原理&#xff1a; 明文&#xff1a;abc 去找ascii碼的二進制形式 a-->97-→01100001 &#xff08;二進制為8位如果不足8位則在最左邊補0至8位&#xff09; b-→…

生物環保的技術原理和優點是什么

生物環保的技術原理和優點可以歸納如下&#xff1a; 技術原理 生物環保利用生物學原理&#xff0c;采用生物技術&#xff0c;通過生物過程來凈化環境&#xff0c;消除污染物&#xff0c;減少污染源&#xff0c;從而改善環境質量。這主要依賴于微生物的代謝活動、生長特性和相…

05STM32EXIT外部中斷中斷系統

STM32EXIT外部中斷&中斷系統 中斷系統中斷觸發條件&#xff1a;中斷處理流程和用途&#xff1a; STM32中斷NVIC嵌套中斷向量控制器基本結構 中斷系統 中斷觸發條件&#xff1a; 對外部中斷來說&#xff0c;可以是引腳發生了電平跳變 對定時器來說&#xff0c;可以是定時的…

算法系列--鏈表問題

一.一些經驗總結 鏈表天然具有遞歸性質,單鏈表可以看做一個單叉樹,很多可以應用到二叉樹的題目也可以應用到鏈表的題目之中,下面是一個體現單鏈表遞歸性質很好的例子逆序打印鏈表的值 private void reversePrint(ListNode head) {if(head null) return;reversePrint(head.ne…

速盾:cdn節點作用?

CDN&#xff08;Content Delivery Network&#xff09;指的是內容分發網絡&#xff0c;是一種通過部署在全球不同地理位置的服務器節點來提供快速、高效的內容傳輸和分發的技術架構。CDN節點在網絡中的作用非常重要&#xff0c;下面就對其作用進行詳細解析。 提供高速內容傳輸&…

《算法筆記》總結No.6——貪心

一.簡單貪心 貪心法是求解一類最優化問題的方法&#xff0c;它總是考慮在當前狀態下局部最優(或較優)之后&#xff0c;來使全局的結果達到最優(或較優)的策略。顯然&#xff0c;如果采取較優而非最優的策略(最優策略可能不存在或是不易想到)&#xff0c;得到的全局結果也無法是…

socketserver和WSGI服務端實現教程

Python socketserver 和 WSGI 服務端實現教程 在本文中&#xff0c;我們將詳細解析一個使用 socketserver 模塊實現的簡單 WSGI 服務器。該服務器能夠處理 HTTP 請求&#xff0c;支持 WSGI 應用&#xff0c;并正確處理響應頭和錯誤。 代碼概述 這段代碼定義了一個 run_wsgi …

【深入理解JVM】關于Object o = new Object()

1. 解釋一下對象的創建過程 “半初始化”狀態通常指的是對象在內存分配后、但在完全初始化之前的一種狀態。在Java中&#xff0c;雖然JVM的規范和設計努力避免對象處于這種不穩定的狀態&#xff0c;但在多線程環境下&#xff0c;由于指令重排序等并發問題&#xff0c;仍有可能…

Apache Spark詳解

目錄 性能優化 銀行業務案例&#xff1a; 步驟1&#xff1a;環境準備和數據加載 步驟2&#xff1a;數據探索和預處理 步驟3&#xff1a;特征工程 步驟4&#xff1a;數據轉換 步驟5&#xff1a;構建機器學習模型 步驟6&#xff1a;模型評估 步驟7&#xff1a;部署和監控…

Spring JdbcTemplate使用

maven引入Spring JDBC <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.19</version></dependency> Spring配置中配置 <!-- DataSource配置 --><bean id"…

java代理簡單理解

一、什么是代理 舉例說明&#xff1a;當我想買一臺電腦&#xff0c;國內太貴了。委托好友A在國外幫忙買。 這個情節中我要實現的動作和好友實現的動作一樣&#xff0c;都是買電腦。好友幫我完成了這個動作&#xff0c;這就是代理。 類A和類B都實現一個interface接口C&#x…

【LeetCode刷題筆記】LeetCode.24.兩兩交換鏈表中的節點

創作不易&#xff0c;本篇文章如果幫助到了你&#xff0c;還請點贊 關注支持一下?>&#x16966;<)!! 主頁專欄有更多知識&#xff0c;如有疑問歡迎大家指正討論&#xff0c;共同進步&#xff01; 更多算法知識專欄&#xff1a;算法分析&#x1f525; 給大家跳段街舞感謝…

新手小白的pytorch學習第一彈-------張量

1 導入pytorch包 import torch2 創建張量&#xff08;tensor&#xff09; scalar標量 scalar torch.tensor(7) scalartensor(7)scalar.ndim查看scalar的維度&#xff0c;因為scalar是標量&#xff0c;所以維度為0 0scalar.shapetorch.Size([])torch.item()7vector&#xf…

Apache功能配置:訪問控制、日志分割; 部署AWStats日志分析工具

目錄 保持連接 訪問控制 只允許指定ip訪問 拒絕指定主機其他正常訪問 用戶授權 日志格式 日志分割 操作步驟 使用第三方工具cronolog分割日志 AWStats日志分析 操作步驟 訪問AwStats分析系統 保持連接 Apache通過設置配置文件httpd-default.conf中相關的連接保持參…

基于Java的科大訊飛大模型API調用實現

寫在前面&#xff1a;因為現在自己實習的公司新拓展的一個業務是結合AI的低代碼平臺&#xff0c;我負責后端的開發&#xff0c;之前一直都是直接使用gpt或者文心一言等ui界面來直接使用大模型&#xff0c;從來沒有自己調接口過&#xff0c;所以本文記錄一下自己第一次使用大模型…

源代碼防泄漏的正確方法

為了保護公司的源代碼不被泄露&#xff0c;IT企業可以采取一系列嚴格的安全措施。這些措施涵蓋技術手段、管理策略和操作流程&#xff0c;形成多層次的防護體系做到源代碼防泄漏工作。 技術手段 1、源代碼加密&#xff1a; 采用高級加密標準&#xff08;AES&#xff09;或其他…

【QT】QComboBox允許輸入查詢,且不區分大小寫

目錄 0.簡介 1.環境 2.詳細代碼 3.參考 0.簡介 項目需求&#xff0c;原本有一個下拉框&#xff0c;但是條目太多&#xff0c;不好搜索&#xff0c;所以用戶要求可以輸入查找 修改前 &#xff1a; 修改后&#xff1a; 1.環境 windows11 vs-code qt5.12 2.詳細代碼 QComboB…