C語言學習--鏈式結構

結構體的應用:
//數據結構與算法
? ? ? ? ? ? ?數據結構 ---- 指的是 數據的組織形式 ?

數組 --- 數據結構
? ? ? ? ? ? ?數組特點
? ? ? ? ? ? ?連續性,有序性,單一性

數據操作(訪問)時的特點

--------------------------------------------------------------
數組:
? ? 數據結構體---操作時候的特點, ? ? //特點決定他應用的場合
?? ? ? ? ? ? ? ? 優勢, s[i] 隨機訪問(隨機存取)---> 存 拿數據很方便
?? ??? ??? ??? ? 不足: 插入數據 刪除數據 不方便

鏈表
? ?? ?鏈式數據結構;
struct stu s1;
struct stu s2;
struct stu s3;
?
? ? ?s1->s2->s3?? ?
? 特點:
? ? 優勢:增加和刪除數據 很方便 ?
?? ?不足:存和取數據的時候不方便,沒有數組方便
?? ?
[數據]
[指針]?? ?
?? ? ?
節點

struct Node
{
? ? int data; ? ?//數據域 --存儲要處理的數據
? ? struct Node*next; ?//保存地址--指向下一個節點
}; ? ? ? ? //節點類型?? ? ?

struct Node n1;
struct Node n2;
struct Node n3;?

鏈式存儲的樣子:

[數據n1] ? ? ? ?[數據n2] ? ? ?[數據n3]?
[指針&n2]?? ??? ?[指針&n3]?? ? ?[指針 xxx ] ?
? n1 ? ? ? ? ? ? n2 ? ? ? ? ? ?n3?
?? ? ?
----------------------------------
有頭鏈表和無頭鏈表
無頭--第一個節點數據與為隨機值或者無效值
有頭--第一個節點不存有效數據 ? ? //作用:為了更方便的操作鏈表

C語言中 ---> 主要研究 ?“有頭單項鏈表“

頭節點 ---數據域值隨機
首節點 ---第一個保存有效數據的節點
尾節點 ---鏈表的最后一個有效節點 NULL。

操作: //數據結構體 數據的處理 --> 增刪改查
1、創建一個鏈表
? ? //空鏈表 -- 只有頭節點 ,但沒有有效的數據節點
?? ?struct Node *createEmptyLinklist(struct Node **head)
{
?? ?//struct Node *head = malloc(sizeof(struct Node));
?? ?*head = malloc(sizeof(struct Node));
?? ?(*head)->next = NULL;
?? ?return *head;
}

?? ?
頭加
void pushFront(struct Node *head,int dt)
{
?? ?struct Node *new = malloc(sizeof(struct Node ));
?? ?new->data = dt;
?? ?
?? ?//s2?
?? ?new->next = head->next;

?? ?//s3?
?? ?head->next = new;
}

?尾加
?void pushBack(struct Node *head,int dt)
{
?? ?//s1?
?? ?struct Node *new = malloc(sizeof(struct Node));
?? ?new->data = dt;
? ? //s2
?? ?struct Node *p = head;
?? ?while (p->next!=NULL)
?? ?{
?? ??? ?p = p->next;
?? ?}
?? ?//s3?
?? ?p->next = new;
?? ?new->next = NULL;
}

?
?
?
?
頭刪
void popFront(struct Node *head)
{
? ??
? ? struct Node *p = head->next;
?? ?head->next = p->next;
?? ?free(p);
}


?尾刪
?? ?void pushBack(struct Node *head,int dt)
{
?? ?//s1?
?? ?struct Node *new = malloc(sizeof(struct Node));
?? ?new->data = dt;
? ? //s2
?? ?struct Node *p = head;
?? ?while (p->next!=NULL)
?? ?{
?? ??? ?p = p->next;
?? ?}
?? ?//s3?
?? ?p->next = new;
?? ?new->next = NULL;
}
??
?? ? ?
銷毀鏈表:
?? ? ?void destroyLinklist(struct Node **head)
{
?? ?while (isEmpty(*head) == 0)
?? ?{
?? ??? ?popFront(*head);
?? ?}
??
?? ?free(*head);
?? ?*head=NULL;?
}

計算鏈表長度:
int length(struct Node *head)
{?
?? ?struct Node *p = head->next;?
?? ?int cnt = 0;
?? ?while (p != NULL)
?? ?{
?? ??? ?cnt++;
?? ??? ?p = p->next;
?? ?}

?? ?return cnt;
}
??
輸出鏈表數據:
void printLinklist(struct Node *head)
{
?? ?struct Node *p = head->next; //

?? ?while ( p!= NULL)
?? ?{
?? ??? ?printf("%d\n",p->data);
?? ??? ?p = p->next;
?? ?}
}
?? ? ?
?? ? ?

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

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

相關文章

Ubuntu24.04記錄網易郵箱大師的安裝

郵箱大師下載 官網自行下載,下載后文件名“mail.deb" https://dashi.163.com/ 安裝發現缺少依賴 #mermaid-svg-8wqpqFSBVOPD7NGP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8wqpqFSBVOPD7NGP …

PIVOT函數-動態列

一、需求說明 原始表&#xff1a; select * from pathogen_pro; 將pm_name的值轉成對應的列&#xff0c;效果如下 二、PIVOT函數說明 PIVOT(<聚合函數>([聚合列值]) FOR [行轉列前的列名] IN([行轉列后的列名1],[行轉列后的列名2],[行轉列后的列名3],.......[行轉列后…

Julia編程11:變量作用域 Scope of Variables

There are two main types of scopes in Julia, global* scope* and local* scope*. Julia有全局變量作用域和局部變量作用域&#xff0c;函數或者一些結構體、循環體如for等是否內部是局部環境可以參照下表。 ConstructScope typeAllowed withinmodule, baremoduleglobalglo…

.Net 基于.Net8開發的一個Asp.Net Core Webapi后端框架

1.項目結構 該項目是基于.net8開發的Asp.Net Core WebApi后端服務,集成了Efcore,Autofac,Jwt,AutoMapper,Serilog,Quartz,MiniExcel等組件。該框架簡單易上手&#xff0c;沒有額外的學習成本; 該項目采用了多層結構設計&#xff0c;有利于解耦&#xff0c;包含公共層&#xff0…

Linux入門學習指南

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

MySQL數據庫整體知識點簡述

目錄 第一章&#xff1a;數據庫系統概述 第二章&#xff1a;信息與數據模型 第3章 關系模型與關系規范化理論 第四章——數據庫設計方法 第六-七章——MySQL存儲引擎與數據庫操作管理 第九章——索引 第10章——視圖 第11章——MySQL存儲過程與函數 第12章——MySQL 觸…

【SIPMRCP】freeswitch中的transfer和bridge有什么區別

在FreeSWITCH中&#xff0c;transfer和bridge是兩個用于處理通話的不同概念&#xff0c;它們之間的主要區別體現在功能和用途上。以下是關于這兩個概念的清晰解釋和區別&#xff1a; transfer&#xff08;轉移&#xff09; 功能&#xff1a;transfer主要用于將通話從一個目標…

IIS7整合Tomcat9服務器,并搭建ASP+PHP+JSP完整運行環境

本文以Windows Vista系統為例&#xff0c;詳細講解IIS7整合Tomcat服務器&#xff0c;同時支持ASPPHPJSP三種Web動態網頁技術的方法。 Vista系統自帶的IIS版本為7.0&#xff0c;能安裝的IE瀏覽器的最高版本為IE9。IE9也是Vue2前端框架支持的最低瀏覽器版本。 【準備工作】 去微…

【TB作品】msp430g2553單片機,讀取GY-30光強,串口發送

硬件 //GY-30 //SCL–P1.4 //SDA–P1.5 //VCC–3.3V //GND–GND //ADDR–不接 部分程序 #include <msp430.h> #include "gy30.h"void Send_Byte(char data) {while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready?UCA0TXBUF data…

藍橋杯物聯網競賽_STM32L071_20_用printf將數據顯示在OLED上

需求&#xff1a; 第十五屆國賽確實有點變態&#xff0c;顯示部分大概有6個所以需要大量將sprintf與OLED_ShowString配合使用才能顯示相應格式的數據&#xff0c;所以我在想能不能簡化一下這一部分直接用寫好的printf語句將數據顯示到顯示屏上呢&#xff1f; 代碼&#xff1a…

樹--搜索二叉樹

現有一棵結點數目為n的二叉樹&#xff0c;采用二叉鏈表的形式存儲。對于每個結點均有指向左右孩子的兩個指針域&#xff0c;而結點為n的二叉樹一共有n-1條有效分支路徑。那么&#xff0c;則二叉鏈表中存在2n-(n-1)n1個空指針域。那么&#xff0c;這些空指針造成了空間浪費。 例…

【TB作品】msp430g2553單片機,秒表,LCD1602,Proteus仿真

功能 秒表 動圖&#xff1a; 部分代碼 這段代碼是用C語言編寫的&#xff0c;用于在基于德州儀器MSP430微控制器的平臺上實現一個簡易的電子秒表功能。 #include <msp430.h> #include "LCD.h"unsigned int second 0; unsigned int millisecond10…

【HarmonyOS】應用振動效果實現

一、問題背景&#xff1a; 應用在強提醒場景下&#xff0c;一般會有馬達振動的效果&#xff0c;提示用戶注意力的關注。 比如消息提醒&#xff0c;掃碼提示&#xff0c;刪除鍵確認提示等。 針對高定制化或者固定的振動方式&#xff0c;我們需要有不同的方案實現&#xff0c;馬…

php項目加密源碼

軟件簡介 壓縮包里有多少個php就會被加密多少個PHP、php無需安裝任何插件。源碼全開源 如果上傳的壓縮包里有子文件夾&#xff08;子文件夾里的php文件也會被加密&#xff09;&#xff0c;加密后的壓縮包需要先修復一下&#xff0c;步驟&#xff1a;打開壓縮包 》 工具 》 修…

【云原生】Kubernetes----Ingress對外服務

目錄 引言 一、K8S對外方式 &#xff08;一&#xff09;NodePort 1.作用 2.弊端 3.示例 &#xff08;二&#xff09;externalIPs 1.作用 2.弊端 3.示例 &#xff08;三&#xff09;LoadBalancer 1.作用 2.弊端 &#xff08;四&#xff09;Ingress 二、Ingress的…

Linux文件I/O與標準I/O緩沖機制及性能分析

目錄 1、文件I/O 1.1、數據緩沖機制 1.2、性能影響 2、標準I/O 2.1、數據緩沖機制 2.2、性能影響 3、文件I/O與標準I/O的對比 在Linux中&#xff0c;文件I/O和標準I/O是兩種常見的I/O操作方式&#xff0c;它們在數據緩沖的原理和機制上有所不同。理解這些原理和機制對優…

gitea的git庫備份與恢復

文章目錄 gitea庫的備份與恢復概述筆記實驗環境更新git for windows更新 TortoiseGit備份已經存在的gitea的git庫目錄使用gitea本身來備份所有git庫目錄將gitea庫恢復到新目錄m1m2m3啟動gitea - 此時已經恢復完成FETCH_HEAD 中有硬寫位置再查一下app.ini, 是否改漏了。m1m2 總結…

容器中運行ip addr提示bash: ip: command not found【筆記】

容器中運行ip addr提示bash: ip: command not found 原因沒有安裝ip命令。 rootdocker-desktop:/# ip addr bash: ip: command not found rootdocker-desktop:/# apt-get install -y iproute2

谷歌廣告怎么開戶?Google推廣開戶費用、代運營流程、代理開戶、投放價格

谷歌推廣&#xff08;Google Ads廣告&#xff09;是指Google公司面向全球用戶&#xff0c;在其自有搜索引擎、YouTube視頻、Gmail郵箱等各類自有產品提供的廣告位中&#xff0c;展示的各類互聯網廣告。谷歌廣告&#xff0c;有很多種衍生的叫法&#xff1a;谷歌SEM、谷歌競價、谷…

渦輪流量傳感器

渦輪流量傳感器是一種精密的流量測量儀表&#xff0c;廣泛應用于石油、化工、冶金、科研等領域的計量和控制系統。配備有衛生接頭的渦輪流量傳感器還可以應用于制藥行業。該傳感器的主要工作原理基于流體動力學和電磁感應原理&#xff0c;當流體流經傳感器時&#xff0c;流體的…