C語言之鏈表增刪查改

1.知識百科

??鏈表(Linked List)是計算機科學中一種基礎的數據結構,通過節點(Node)的鏈式連接來存儲數據。每個節點包含兩部分:存儲數據的元素和指向下一個節點的指針(單鏈表)或前后兩個指針(雙鏈表)。

  • 常見操作
    ??插入:在頭部、尾部或指定位置插入節點。
    ??刪除:刪除指定節點(需處理指針指向)。
    ??遍歷:從頭節點依次訪問每個節點。
    ??查找:按值或位置查找節點(需遍歷)。

2.鏈表操作

2.1 創建鏈表

??創建一個鏈表,用于保存學生信息,分別存儲姓名、學號和成績。
在這里插入圖片描述

typedef struct STU{char name[50];char id[20];float score;struct STU *next;
}STU_INFO,*P_STU; 

??添加節點,每一個節點保存一位學生信息。

/*錄入信息*/
void STU_Input(P_STU node)
{printf("請輸入姓名、學號、成績:\n");scanf("%s%s%f",node->name,node->id,&node->score);while(getchar()!='\n');
}
/*
添加節點(尾插法)
*/
void STU_AddNode(P_STU *head)
{if(*head==NULL){*head=malloc(sizeof(STU_INFO));//創建鏈表頭(*head)->next=NULL;STU_Input(*head);//錄入成員信息return ;}//鏈表頭已存在P_STU phead=*head;//偏移指針,將phead指向鏈表尾while(phead->next!=NULL){phead=phead->next;}//創建節點P_STU new_node=malloc(sizeof(STU_INFO));printf("添加節點:%p\n",new_node);phead->next=new_node;phead=phead->next;phead->next=NULL;//new_node->next=NULL;//錄入信息STU_Input(new_node);//錄入成員信息
}

2.2 遍歷鏈表

??遍歷鏈表,查看所有學生信息。

void STU_Output(P_STU head)
{P_STU phead=head;//指向鏈表頭while(phead!=NULL){printf("姓名:%s  學號:%s  成績:%.1f\n",phead->name,phead->id,phead->score);phead=phead->next;}
}

2.3 刪除節點

??根據名字查找子節點,并刪除。

??當刪除的節點為中間節點,刪除過程如下:
在這里插入圖片描述
??當刪除的節點為頭節點,刪除過程如下:
在這里插入圖片描述
??節點刪除代碼實現如下,支持刪除多個連續的重復節點。

//查找子節點進行刪除
P_STU STU_FindNode_Del(P_STU head)
{//判斷鏈表頭是否為NULLP_STU phead=head;P_STU temp=head,temp2;char name[50];printf("請輸入要查找的名字:\n");scanf("%s",name);while(getchar()!='\n');while(phead!=NULL){if(strcmp(phead->name,name)==0){//要刪除的數據在鏈表頭if(phead==head){temp=phead;phead=phead->next;free(temp);head=phead;}else{//要刪除的數據不在鏈表頭temp->next=phead->next;temp2=phead;phead=phead->next;free(temp2);//釋放節點}}else //繼續找下一個成員{temp=phead;phead=phead->next;//繼續查找下一個成員}}return head;//返回鏈表頭
}

??測試示例:

int main()
{P_STU head=NULL;//定義一個結構體指針int i=0;//添加節點while(1){STU_AddNode(&head);i++;if(i>=4)break;}printf("遍歷鏈表\n");STU_Output(head);printf("刪除節點\n");head=STU_FindNode_Del(head);printf("剩余成員信息\n");STU_Output(head);return 0;
}

??運行效果:

wbyq@wbyq-virtual-machine $ ./a.out 
請輸入姓名、學號、成績:
1 1 1
請輸入姓名、學號、成績:
2 2 2
請輸入姓名、學號、成績:
2 2 2
請輸入姓名、學號、成績:
3 3 3
遍歷鏈表
姓名:1  學號:1  成績:1.0
姓名:2  學號:2  成績:2.0
姓名:2  學號:2  成績:2.0
姓名:3  學號:3  成績:3.0
刪除節點
請輸入要查找的名字:
2
剩余成員信息
姓名:1  學號:1  成績:1.0
姓名:3  學號:3  成績:3.0

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

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

相關文章

Windows環境下AnythingLLM安裝與Ollama+DeepSeek集成指南

前面已經完成了Ollama的安裝并下載了deepseek大模型包,下面介紹如何與anythingLLM 集成 Windows環境下AnythingLLM安裝與OllamaDeepSeek集成指南 一、安裝準備 1. 硬件要求 如上文說明 2. 前置條件 已安裝Ollama并下載DeepSeek模型(如deepseek-r1:…

當貝AI知識庫評測 AI如何讓知識檢索快人一步

近日,國內領先的人工智能服務商當貝AI正式推出“個人知識庫”功能,這一創新性工具迅速引發行業關注。在信息爆炸的時代,如何高效管理個人知識資產、快速獲取精準答案成為用戶的核心需求。當貝AI通過將“閉卷考試”變為“開卷考試”的獨特設計,為用戶打造了一個高度個性化的智能…

HarmonyOS NEXT——【鴻蒙原生應用加載Web頁面】

鴻蒙客戶端加載Web頁面: 在鴻蒙原生應用中,我們需要使用前端頁面做混合開發,方法之一是使用Web組件直接加載前端頁面,其中WebView提供了一系列相關的方法適配鴻蒙原生與web之間的使用。 效果 web頁面展示: Column()…

嵌入式開發場景中Shell腳本執行方式的對比

?Shell腳本執行方式對比表? ?執行方式??命令示例??是否需要執行權限??是否啟動子Shell??環境變量影響范圍??適用場景??嵌入式開發中的典型應用??直接執行腳本?./script.sh是是子Shell內有效獨立運行的腳本,需固定環境自動化構建腳本(…

MES系統需要采集的數據及如何采集

?數據采集在企業信息化建設中占據著舉足輕重的地位,是實現物料跟蹤、生產計劃制定、產品歷史記錄維護以及其他生產管理活動的基石。數據的準確性和實時性直接關系到企業信息化能否成功落地,是企業邁向高效生產的關鍵因素。 數據收集對于MES制造執行系統…

閉環管理:借助數字化管理平臺實現客戶反饋的價值升級

在競爭激烈的市場環境中,客戶反饋已成為企業優化服務、提升競爭力的核心資源。如何高效處理客戶反饋,將其轉化為企業持續改進的動力,是每個企業面臨的重要課題。作為服務管理數字化轉型服務商,瑞云服務云為大中型企業提供了一套完…

C++Primer學習(13.6 對象移動)

13.6 對象移動 新標準的一個最主要的特性是可以移動而非拷貝對象的能力。如我們在13.1.1節(第440頁)中所見,很多情況下都會發生對象拷貝。在其中某些情況下,對象拷貝后就立即被銷毀了。在這些情況下,移動而非拷貝對象會大幅度提升性能。 如我…

Uni-app頁面信息與元素影響解析

獲取窗口信息uni.getWindowInfo {pixelRatio: 3safeArea:{bottom: 778height: 731left: 0right: 375top: 47width: 375}safeAreaInsets: {top: 47, left: 0, right: 0, bottom: 34},screenHeight: 812,screenTop: 0,screenWidth: 375,statusBarHeight: 47,windowBottom: 0,win…

大模型 API 調用中的流式輸出與非流式輸出全面對比:原理、場景與最佳實踐

流式輸出與非流式輸出應用場景 流式輸出的理想應用場景 實時對話系統聊天機器人和虛擬助手客服系統和用戶支持平臺實時問答和教育輔導應用 漸進式內容生成代碼補全和編程輔助工具(如 GitHub Copilot)實時文檔協作和編輯系統創意寫作和內容創作平臺 用戶…

Problem A: 計算奇數和

補充(牢騷): 必須要 Main 類,自己自定義的類不能跑,說實話我被惡心到了,真沒力扣好用。后面都默認為Main 類。真惡心,其實不止這一點。。。 1.題目問題 2.輸入 3.輸出 4.樣例 5.代碼實現 imp…

深度賦能!北京智和信通融合DeepSeek,解鎖智能運維無限可能

在數字化飛速發展的今天,傳統運維模式面臨著設備規模激增、故障復雜度攀升、人工響應滯后等多重挑戰。隨著DeepSeek、騰訊元寶等AI大模型的興起,為傳統運維模式帶來了新的變革。 北京智和信通基于DeepSeek大模型技術,將AI和運維場景深度融合&…

2024年第五屆MathorCup數學應用挑戰賽大數據競賽復賽論文

2024年第五屆MathorCup數學應用挑戰賽——大數據競賽 復賽(二等獎)論文 本人親自與隊友完成的論文,進入復賽但由于和亞太時間沖突,身體很累最后放棄了復賽并沒有參賽…最后獲二等獎; 雖然如果參加的話一等獎問題應該不大,但是分配…

性能測試~

1.什么是性能測試 1.什么是性能 就像這兩個車一樣,雖然都是代步工具,構造都是一樣的,但是路虎的發動機要比捷達好.路虎的百米加速卻是比捷達快的,我們就知道路虎的性能要比捷達好 . 那么什么是軟件的性能呢?我們分析一下 2.常見的性能測試指標 2.1并發數 并發數是指在同一…

【極速版 -- 大模型入門到進階】LORA:大模型輕量級微調

文章目錄 🌊 有沒有低成本的方法微調大模型?🌊 LoRA 的核心思想🌊 LoRA 的初始化和 r r r 的值設定🌊 LoRA 實戰:LoraConfig參數詳解 論文指路:LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE M…

【論文分析】無人機軌跡規劃,Fast-Planner:實時避障+全局最優的路徑引導優化算法

這篇論文《Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths》由香港科技大學提出,主要針對無人機(UAV)在復雜環境中的實時軌跡重新規劃問題,提出了一種結合梯度優化和拓撲路徑搜…

禪道品牌全面戰略升級:開創項目管理國產化替代新格局

2025年,禪道軟件完成企業品牌戰略深度升級。此次升級,從產品力、服務力到生態圈構建等方面進行了全面優化,以更智慧的解決方案、更開放的生態布局,更安全的國產化解決方案,助力企業實現從“工具應用”到“價值創造”的…

PyTorch處理數據--Dataset和DataLoader

在 PyTorch 中,Dataset 和 DataLoader 是處理數據的核心工具。它們的作用是將數據高效地加載到模型中,支持批量處理、多線程加速和數據增強等功能。 一、Dataset:數據集的抽象? Dataset 是一個抽象類,用于表示數據集的接口。你…

Android 藍牙/Wi-Fi通信協議之:經典藍牙(BT 2.1/3.0+)介紹

在 Android 開發中,經典藍牙(BT 2.1/3.0)支持多種協議,其中 RFCOMM/SPP(串口通信)、A2DP(音頻流傳輸)和 HFP(免提通話)是最常用的。以下是它們在 Android 中的…

R002-云計算

1 概念 英文名:Cloud Computing 核心:云計算的核心概念就是以互聯網為中心,在網站上提供快速且安全的云計算服務與數據存儲,讓每一個使用互聯網的人都可以使用網絡上的龐大計算資源與數據中心 2.分類 基礎設施即服務(IaaS)它向…

降維(DimensionalityReduction)基礎知識2

文章目錄 五、基于局部結構保持的降維1、Laplacian Eigenmaps(拉普拉斯特征映射)(1)鄰接矩陣(2)圖論基礎(3)Laplace算子1、散度(Divergence)2、拉普拉斯算子3…