日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

C语言的单链表创建:头插法/尾插法

發布時間:2023/11/27 生活经验 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言的单链表创建:头插法/尾插法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

          • 前言
          • 鏈表頭插法
          • 鏈表尾插法
          • 源碼實現

前言

接下來一段時間,將對數據結構進行復習,總的來說數據結構自大學之后忘記得有點嚇人,為了防止腦容量本就小得腦袋更小,必須得持續性得溫故了。

鏈表數據結構得提出 是為了彌補數組上 元素插入、刪除導致大量元素移動得缺點,這里將C語言得指針提取出來構造一個指針管理得存儲數據得結構,使用鏈式得方式消耗極少對資源(指針的指向,地址得刪除)能夠對單個元素得插入刪除進行操作。

鏈表頭插法

基本操作如下:

  1. 新節點得next域指向頭節點的next域即可
  2. 頭節點的next域指向新節點
    實現如下(文末有完整C代碼):
    Data *insert_head(Data *head, int n) {head = (Data *)malloc (sizeof(Data));head -> next = NULL;int data;while(n --) {Data *p = (Data *)malloc(sizeof(Data));scanf("%d",&data);p -> data = data;p -> next = head -> next;head -> next = p;}return head;
    }
    
鏈表尾插法

基本操作如下:

  1. 先將保留尾部的指針的next域指向新節點
  2. 新節點的next域執行尾節點標記NULL
  3. 更新保留部的節點
    實現如下:
    Data *insert_tail(Data *head, int n) {head = (Data *)malloc(sizeof(Data));head -> next = NULL;Data *r = head;int data;while(n--) {Data *p = (Data *)malloc(sizeof(Data));scanf("%d", &data);p -> data = data;r -> next = p;r = p;p -> next = NULL;}return head;
    }
    
源碼實現
#include <stdio.h>
#include <stdlib.h>typedef struct link_list {int data;struct link_list *next;
}Data;void print_list(Data *head) {while (head) {printf("%d ",head->data);head = head -> next;}printf("\n");
}Data *insert_head(Data *head, int n) {head = (Data *)malloc (sizeof(Data));head -> next = NULL;int data;while(n --) {Data *p = (Data *)malloc(sizeof(Data));scanf("%d",&data);p -> data = data;p -> next = head -> next;head -> next = p;}return head;
}Data *insert_tail(Data *head, int n) {head = (Data *)malloc(sizeof(Data));head -> next = NULL;Data *r = head;int data;while(n--) {Data *p = (Data *)malloc(sizeof(Data));scanf("%d", &data);p -> data = data;r -> next = p;r = p;p -> next = NULL;}return head;
}int main() {Data *head;int i ,b ;printf("construct head link list :\n");head = insert_tail(head,5);Data *test = head -> next;print_list(test);printf("construct tail link list :\n");head = insert_tail(head,5);Data *test = head -> next;print_list(test);return 0;
}

輸出如下,很明顯能夠看到頭插法和尾插法的輸出情況:

construct head link list :
1 2 3 4 5
5 4 3 2 1 
construct tail link list :
1 2 3 4 5
1 2 3 4 5 

總結

以上是生活随笔為你收集整理的C语言的单链表创建:头插法/尾插法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。