c語言數據結構 單循環鏈表設計(完整代碼)

單鏈表的增刪查改代碼:

1.創建結構體

// 結構體類型的創建
struct node
{int data;          // 數據域struct node *next; // 指針域
};

2.創建節點,節點的存儲在malloc申請的空間內,也就是堆空間。

// 創建節點
struct node *create_node(int data)
{struct node *xnew = malloc(sizeof(struct node));if (xnew == NULL){perror("創建失敗\n");}xnew->data = data;xnew->next = xnew;return xnew; // 返回xnew的地址
}

3.頭插入節點,先讓節點指向頭,在讓頭節點指向新節點

// 頭插入節點
void top(struct node *head, struct node *xnew)
{xnew->next = head->next;head->next = xnew;
}

4.尾插法,定義一個游走的節點,讓該節點偏移到單鏈表的最后一個節點,再讓該游走節點指向新節點,并且使新的節點指向頭節點,實現單鏈表循環

// 尾插法
void wei(struct node *head, struct node *xnew)
{struct node *pos = head->next;// 讓節點走起來 不斷地走到下一位while (pos->next != head){pos = pos->next;}pos->next = xnew;xnew->next = head;
}

5.顯示節點數據函數,同樣定義一個游走的節點,先讓其指向頭節點的下一位,再讓其走過單鏈表的每個一個節點,并答應出來

// 顯示節點
void show_node(struct node *head)
{struct node *pos = head->next;while (pos != head){printf("%d ", pos->data);pos = pos->next;}printf("\n");
}

6.刪除節點,我們同意定義一個游走的節點指針,讓該節點走過單鏈表并逐一判斷是否是我們要刪除的節點,如果是則退出來,并用一個新的節點指針p來指向該地址,在設計游走節點的時候使用pos->next-data,這樣可以讓節點始終停留在節點p的上一位,并讓該指針pos指向節點p的下一位,然后讓節點p指向NULL,并釋放堆內存

// 刪除節點
void delete_node(struct node *head, int data)
{struct node *pos = head->next;while (pos->next->data != data){pos = pos->next;}struct node *p = pos->next;pos->next = p->next;p->next = NULL;free(p);
}

7.修改節點,定義一個游走的節點指針,讓該節點游走單鏈表,如果找到了我們要的數據,那就賦值進行修改。

// 修改節點
void modify_node(struct node *head, int data, int new_data)
{struct node *pos = head->next;while(pos->data != data){pos = pos->next;}pos->data = new_data;}

完整代碼:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 結構體類型的創建
struct node
{int data;          // 數據域struct node *next; // 指針域
};// 創建節點
struct node *create_node(int data)
{struct node *xnew = malloc(sizeof(struct node));if (xnew == NULL){perror("創建失敗\n");}xnew->data = data;xnew->next = xnew;return xnew; // 返回xnew的地址
}
// 頭插入節點
void top(struct node *head, struct node *xnew)
{xnew->next = head->next;head->next = xnew;
}
// 尾插法
void wei(struct node *head, struct node *xnew)
{struct node *pos = head->next;// 讓節點走起來 不斷地走到下一位while (pos->next != head){pos = pos->next;}pos->next = xnew;xnew->next = head;
}
// 顯示節點
void show_node(struct node *head)
{struct node *pos = head->next;while (pos != head){printf("%d ", pos->data);pos = pos->next;}printf("\n");
}
// 刪除節點
void delete_node(struct node *head, int data)
{struct node *pos = head->next;while (pos->next->data != data){pos = pos->next;}struct node *p = pos->next;pos->next = p->next;p->next = NULL;free(p);
}
// 修改節點
void modify_node(struct node *head, int data, int new_data)
{struct node *pos = head->next;while(pos->data != data){pos = pos->next;}pos->data = new_data;}
//主函數
int main()
{struct node *head = create_node(0);for (int i = 1; i < 10; i++){top(head, create_node(i));}show_node(head);delete_node(head, 3);show_node(head);modify_node(head,2,999);show_node(head);
}

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

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

相關文章

筆記本電腦關不了機是怎么回事 這有解決方法

在快節奏的現代生活中&#xff0c;筆記本電腦已成為我們工作、學習和娛樂的得力助手。在使用電腦的過程中&#xff0c;筆記本電腦突然關不了機了&#xff0c;怎么回事&#xff1f;下面驅動人生就來講一講筆記本電腦不能正常關機的解決方法&#xff0c;有需要的可以來看看。 一、…

Pytest基礎使用

概述 Pytest是Python里的一個強大的測試框架,靈活易用,可以進行功能,自動化測試使用,可以與Requests,Selenium等進行結合使用,同時可以生成Html的報告。 一、Pytest的基本使用 在未指定Pytest的配置文件時,會對以下文件進行執行: test_*.py,如:test_1.py*_test.py…

服務的拆分數據的遷移

參考&#xff1a; 數據遷移調研

【動態規劃篇】91. 解碼方法

91. 解碼方法 題目鏈接&#xff1a; 91. 解碼方法 題目敘述&#xff1a; 一條包含字母 A-Z 的消息通過以下映射進行了 編碼 &#xff1a; “1” -> ‘A’ “2” -> ‘B’ … “25” -> ‘Y’ “26” -> ‘Z’ 然而&#xff0c;在解碼已編碼的消息時&#xff0c;你…

使用【docker】+【shell】腳本半自動化部署微服務項目

一.前言 以下是一個基于 ?Docker Shell腳本? 的半自動化部署方案&#xff0c;包含鏡像構建、容器管理、網絡配置和日志監控等核心功能&#xff0c;適用于大多數Web應用或微服務項目。 二?.目錄結構 三.腳本代碼實現 1.?Shell腳本實現 (deploy.sh) #!/bin/bash# 設置顏…

每天一道算法題-兩數相加

給你兩個 非空 的鏈表&#xff0c;表示兩個非負的整數。它們每位數字都是按照 逆序 的方式存儲的&#xff0c;并且每個節點只能存儲 一位 數字。 請你將兩個數相加&#xff0c;并以相同形式返回一個表示和的鏈表。 你可以假設除了數字 0 之外&#xff0c;這兩個數都不會以 0 …

win10搭建opengl環境搭建并測試--輸出立方體球體和碗型并在球體上貼圖

參照本文檔可以完成環境搭建和測試&#xff0c;如果想要快速完成環境的搭建可以獲取本人的工程&#xff0c;包括所用到的工具鏈和測試工程源碼獲取&#xff08;非免費介意務下載&#xff09;&#xff1a;鏈接: https://pan.baidu.com/s/1H2ejbT7kLM9ore5MqyomgA 提取碼: 8s1b …

CIR-Net:用于 RGB-D 顯著性目標檢測的跨模態交互與優化(問題)

摘要 問題一&#xff1a;自模態注意力優化單元和跨模態加權優化單元什么意思&#xff1f; 1 優化中間件結構的作用 位置&#xff1a;位于編碼器和解碼器之間 輸入&#xff1a;編碼器提取的RGB特征&#xff0c;深度特征以及RGB-D特征。 輸出&#xff1a;經過優化的RGB&…

LS-NET-004-簡單二層環路解決(華為銳捷思科)

LS-NET-004-簡單二層環路解決&#xff08;華為銳捷思科&#xff09; 以下是為您準備的二層環路示意圖及解決方案&#xff0c;包含四大廠商配置對比&#xff1a; 一、Mermaid 二層環路示意圖 graph TD SW1 -->|Gi0/1| SW2 SW2 -->|Gi0/2| SW3 SW3 -->|Gi0/3| SW1 SW1…

【正點原子K210連載】第七十六章 音頻FFT實驗 摘自【正點原子】DNK210使用指南-CanMV版指南

第七十六章 音頻FFT實驗 本章將介紹CanMV下FFT的應用&#xff0c;通過將時域采集到的音頻數據通過FFT為頻域。通過本章的學習&#xff0c;讀者將學習到CanMV下控制FFT加速器進行FFT的使用。 本章分為如下幾個小節&#xff1a; 32.1 maix.FFT模塊介紹 32.2 硬件設計 32.3 程序設…

火絨終端安全管理系統V2.0——行為管理(軟件禁用+違規外聯)

火絨終端安全管理系統V2.0&#xff1a;行為管理策略分為軟件禁用和違規外聯兩部分&#xff0c;能夠管理終端用戶軟件的使用&#xff0c;以及終端用戶違規連接外部網絡的問題。 l 軟件禁用 軟件禁用策略可以選擇軟件名單的屬性、添加軟件名單以及設置發現終端使用禁用軟件時的…

FastJson:JSON JSONObject JSONArray詳解以及SimplePropertyPreFilter 的介紹

FastJson&#xff1a;JSON JSONObject JSONArray詳解以及SimplePropertyPreFilter 的介紹 FastJson是阿里巴巴開發的一款專門用于Java開發的包&#xff0c;實現Json對象&#xff0c;JavaBean對&#xff0c;Json字符串之間的轉換。 文章目錄 FastJson&#xff1a;JSON JSONObje…

DEFI幣生態重構加速,XBIT去中心化交易所引領DEX安全新范式

2025年3月18日&#xff0c;全球加密市場在監管與技術共振下迎來結構性變革。去中心化金融&#xff08;DeFi&#xff09;代幣DEFI幣因跨鏈流動性協議升級引發社區熱議&#xff0c;而幣應XBIT去中心化交易所&#xff08;以下簡稱XBIT&#xff09;憑借其鏈上透明驗證機制、無需下載…

解析漏洞總結

首先說下為什么要寫著篇文章&#xff0c;之前學習倒是學過&#xff0c;學完就忘啊&#xff0c;tmd iis 5.x/6.0 這個版本有兩種解析姿勢  一.兩種解析漏洞 1.目錄解析 2./xxx.asp/xx.jpg 簡單說一下是什么意思&#xff0c;這里是先在他服務器跟目錄創建一個名為 xxx.…

前端小食堂 | Day18 - 身份認證の八卦陣

&#x1f510; 今日秘術&#xff1a;JWT/OAuth2 攻防奧義 1. JWT 安全の六合陣法 // &#x1f6ab; 危險操作&#xff1a;未驗證簽名 const decodeUnsafe (token) > JSON.parse(atob(token.split(.)[1])); // ? 安全姿勢一&#xff1a;嚴格簽名驗證 import jwt fro…

將bin文件燒錄到STM32

將bin文件燒錄到STM32 CoFlash下載生成hex文件hex2bin使用下載bin到單片機 CoFlash下載 選擇需要安裝的目錄 在Config中可以選擇目標芯片的類型 我演示的是 stm32f103c8t6 最小系統板 Adapter&#xff1a;燒錄器類型 Max Clock&#xff1a;下載速度 Por&#xff1a;接口類型&am…

【Embedded World 2025:邊緣 AI、存儲革新與 1X nm 工藝重塑嵌入式未來】

Embedded World 2025于3月11-13日在德國紐倫堡舉辦&#xff0c;作為全球嵌入式系統領域頂級盛會&#xff0c;匯聚超千家展商與3萬專業觀眾&#xff0c;聚焦嵌入式智能、安全管理及行業解決方案。展會呈現邊緣AI、低功耗MCU、5G RedCap、新型存儲及車規級技術等前沿方向&#xf…

3.19刷題

P6443 [COCI 2010/2011 #1] TIMSKO - 洛谷 #include<bits/stdc.h> using namespace std; int main(){int n,m,k,maxp0;cin>>m>>n>>k;for(int i0;i<n;i){//男生參加人數if(k3*i<mn&&2*i<m) maxpi;}cout<<maxp;return 0; }P645…

Android NDK --- JNI從入門到基礎的全面掌握 (上)

引言 先問 jni是什么&#xff1f; jni和ndk 的關系&#xff1f; 答&#xff1a; java調用 C、C 的代碼。 兩者一個是調用&#xff0c;一個是用c 、c 寫 。 這兩個問題問出來似乎知道又好像不知道。 正文 jni 概述 定義&#xff1a;java Native Interface 即 java本地接口 …

爬蟲 crawler 入門爬取不設防網頁 并實現無限增生

基礎版本 爬取網頁后直接將前端html代碼不加處理的輸出 # pip3 install requests import requests# request the target URL def crawler():response requests.get("https://www.scrapingcourse.com/ecommerce/")response.raise_for_status()print(response.text)…