色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言實現單鏈表-增刪改查

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-05-25 15:05 ? 次閱讀

鏈表是由一連串節點組成的數據結構,每個節點包含一個數據值和一個指向下一個節點的指針。鏈表可以在頭部和尾部插入和刪除節點,因此可以在任何地方插入和刪除節點,從而使其變得靈活和易于實現。

鏈表通常用于實現有序集合,例如隊列和雙向鏈表。鏈表的優點是可以快速隨機訪問節點,而缺點是插入和刪除操作相對慢一些,因為需要移動節點。此外,鏈表的長度通常受限于內存空間,因此當鏈表變得很長時,可能需要通過分頁或鏈表分段等方式來管理其內存。

image-20230525150013245

下面是一套封裝好的單鏈表框架,包括創建鏈表、插入節點、刪除節點、修改節點、遍歷節點和清空鏈表等常見操作,其中每個節點存儲一個結構體變量,該結構體中包含一個名為data的int類型成員。

#include 
 #include 
 ?
 // 鏈表節點結構體
 typedef struct ListNode {
     int data;                   // 節點數據
     struct ListNode *next;      // 下一個節點的指針
 } ListNode;
 ?
 // 創建一個新節點
 ListNode *createNode(int data) {
     ListNode *node = (ListNode*) malloc(sizeof(ListNode));
     node->data = data;
     node->next = NULL;
     return node;
 }
 ?
 // 在鏈表頭部插入一個新節點
 ListNode *insertNodeAtHead(ListNode *head, int data) {
     ListNode *node = createNode(data);
     node->next = head;
     return node;
 }
 ?
 // 在鏈表尾部插入一個新節點
 ListNode *insertNodeAtTail(ListNode *head, int data) {
     ListNode *node = createNode(data);
     if(head == NULL) {
         return node;
     } else {
         ListNode *current = head;
         while(current->next != NULL) {
             current = current->next;
         }
         current->next = node;
         return head;
     }
 }
 ?
 // 刪除鏈表中第一個值為data的節點
 ListNode *deleteNode(ListNode *head, int data) {
     if(head == NULL) {
         return NULL;
     }
     if(head->data == data) {
         ListNode *current = head;
         head = head->next;
         free(current);
         return head;
     }
     ListNode *current = head;
     while(current->next != NULL && current->next->data != data) {
         current = current->next;
     }
     if(current->next != NULL) {
         ListNode *deleteNode = current->next;
         current->next = deleteNode->next;
         free(deleteNode);
     }
     return head;
 }
 ?
 // 修改鏈表中第一個值為oldData的節點的數據為newData
 void updateNode(ListNode *head, int oldData, int newData) {
     ListNode *current = head;
     while(current != NULL) {
         if(current->data == oldData) {
             current->data = newData;
             break;
         } else {
             current = current->next;
         }
     }
 }
 ?
 // 遍歷鏈表
 void traverseList(ListNode *head) {
     ListNode *current = head;
     while(current != NULL) {
         printf("%d ", current->data);
         current = current->next;
     }
     printf("
");
 }
 ?
 // 清空鏈表,釋放所有節點的內存空間
 void clearList(ListNode *head) {
     while(head != NULL) {
         ListNode *current = head;
         head = head->next;
         free(current);
     }
 }
 ?
 // 示例程序
 int main() {
     ListNode *head = NULL;
     head = insertNodeAtHead(head, 1);
     head = insertNodeAtHead(head, 2);
     head = insertNodeAtTail(head, 3);
     traverseList(head);
     head = deleteNode(head, 2);
     traverseList(head);
     updateNode(head, 1, 4);
     traverseList(head);
     clearList(head);
     return 0;
 }

在上述代碼中,定義了一個節點結構體ListNode,其中包含一個int類型的data成員和一個指向下一個節點的指針。接著定義了用于創建新節點、插入節點、刪除節點、修改節點、遍歷節點和清空鏈表等操作的子函數,并在main函數中演示了這些操作的使用例子。在使用完鏈表后一定要調用clearList函數釋放內存空間。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內存
    +關注

    關注

    8

    文章

    3052

    瀏覽量

    74309
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137670
  • 函數
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62959
  • 指針
    +關注

    關注

    1

    文章

    481

    瀏覽量

    70603
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40229
收藏 人收藏

    評論

    相關推薦

    Qt(C++)使用SQLite數據庫完成數據增刪改

    當前文章介紹的設計的主要功能是利用 SQLite 數據庫實現寵物投喂器上傳數據的存儲,并且支持數據的增刪改操作。其中,寵物投喂器上傳的數據包括投喂間隔時間、水溫、剩余重量等參數。
    的頭像 發表于 06-21 09:10 ?1917次閱讀
    Qt(<b class='flag-5'>C</b>++)使用SQLite數據庫完成數據<b class='flag-5'>增刪改</b><b class='flag-5'>查</b>

    Mybatis自動生成增刪改代碼

    使用 mybatis generator 自動生成代碼,實現數據庫的增刪改。 1 配置Mybatis插件 在pom文件添加依賴: pluginsplugin
    的頭像 發表于 01-13 15:43 ?1159次閱讀
    Mybatis自動生成<b class='flag-5'>增刪改</b><b class='flag-5'>查</b>代碼

    Qt(C++)使用SQLite數據庫完成數據增刪改

    當前文章介紹的設計的主要功能是利用 SQLite 數據庫實現寵物投喂器上傳數據的存儲,并且支持數據的增刪改操作。其中,寵物投喂器上傳的數據包括投喂間隔時間、水溫、剩余重量等參數。
    的頭像 發表于 08-28 11:34 ?1994次閱讀

    使用DOM對XML讀取進行增刪改

    DOM解析XML的增刪改實現
    發表于 06-12 16:01

    基于SpringBoot mybatis方式的增刪改實現

    SpringBoot mybatis方式實現增刪改
    發表于 06-18 16:56

    使用jpa和thymeleaf做增刪改示例

    【本人禿頂程序員】springboot專輯:springboot+jpa+thymeleaf增刪改示例
    發表于 04-01 11:49

    如何用php調用mysql數據庫實現增刪改

    php調用mysql數據庫實現增刪改
    發表于 04-09 12:53

    laravel框架如何進行簡單的增刪改和文件上傳

    laravel框架簡單的增刪改和文件上傳
    發表于 04-26 14:13

    python是如何實現hbase增刪改

    hbase shell是怎樣去創建命名空間的?python是如何實現hbase增刪改的?求解
    發表于 10-19 07:26

    LINQ的增刪改源碼 v0.1

    LINQ的增刪改源碼 v0.1.rar 聲明:            
    發表于 02-08 14:21 ?20次下載

    C語言實現鏈表舉例

    所謂鏈表,就是用一組任意的存儲單元存儲線性表元素的一種數據結構。鏈表又分為鏈表、雙向鏈表和循環鏈表
    發表于 07-11 16:40 ?87次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言實現</b><b class='flag-5'>單</b><b class='flag-5'>鏈表</b>舉例

    PHP數據庫教程之增刪改的數據高級操作資料免費下載

    本文檔的主要內容詳細介紹的是PHP數據庫教程之增刪改的數據高級操作資料免費下載。
    發表于 07-02 17:40 ?1次下載

    SQLite數據庫增刪改

    SQLite數據庫增刪改? SQLite是一種輕量級的RDBMS(關系型數據庫管理系統),具有速度快、易用性高等優點。雖然SQLite數據庫相對于一些大型數據庫管理系統而言功能上存在較多的限制
    的頭像 發表于 08-28 17:09 ?1258次閱讀

    mysql數據庫的增刪改sql語句

    MySQL是一種常用的關系型數據庫管理系統,是許多網站和應用程序的首選數據庫。在MySQL中,我們可以使用SQL(結構化查詢語言)進行數據的增刪改操作。本文將詳細介紹MySQL數據庫的增刪改
    的頭像 發表于 11-16 15:41 ?1324次閱讀

    數據庫mysql基本增刪改

    MySQL是一種開源的關系型數據庫管理系統,常用于Web應用程序的數據存儲和管理。通過使用MySQL,用戶可以進行數據的增刪改操作,從而實現對數據的有效管理。下面將詳細介紹MySQL數據庫
    的頭像 發表于 11-16 16:35 ?1580次閱讀
    主站蜘蛛池模板: 精品少妇高潮蜜臀涩涩AV | 色橹橹欧美在线观看视频高 | 一本色道久久88加勒比—综合 | 国产亚洲精品久久孕妇呦呦你懂 | 免费看欧美xxx片 | 伊人青青青 | 美国一级黄色 | yellow在线观看免费高清的日本 | 中文字幕在线观看网站 | 国产不卡视频在线观看 | 亚洲国产成人精品青青草原100 | 久草免费视频在线观看 | 国产人妻午夜无码AV天堂 | 国产精品99久久久精品无码 | 男男高H啪肉Np文多攻多一受 | 十分钟免费视频大全在线 | 农民下乡在线观看3 | 亚洲精品高清在线观看 | 成年人视频在线免费看 | 青草伊人久久 | 午夜福利网国产A | 欧美一区二区视频高清专区 | 浴室里强摁做开腿呻吟的漫画男男 | 日本免费一区二区三区四区五六区 | 国产亚洲精品AV麻豆狂野 | 又黄又肉到湿的爽文 | 欧美一级久久久久久久大 | 国产精品久久人妻互换毛片 | 国产普通话精品久久 | 特级毛片AAAAAA | 123超碰在线视频 | 国产高清在线观看视频 | 免费一区在线观看 | 姑娘视频日本在线播放 | 高H内射NP古文 | 超嫩校花被灌醉在线观看 | 哇嘎在线精品视频在线观看 | 男女生爽爽爽视频免费观看 | 无码成人AAAAA毛片含羞草 | 强姧伦久久久久久久久 | 日韩免费一区二区三区在线 |