C语言的单链表创建:头插法/尾插法
生活随笔
收集整理的這篇文章主要介紹了
C语言的单链表创建:头插法/尾插法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 鏈表頭插法
- 鏈表尾插法
- 源碼實現
前言
接下來一段時間,將對數據結構進行復習,總的來說數據結構自大學之后忘記得有點嚇人,為了防止腦容量本就小得腦袋更小,必須得持續性得溫故了。
鏈表數據結構得提出 是為了彌補數組上 元素插入、刪除導致大量元素移動得缺點,這里將C語言得指針提取出來構造一個指針管理得存儲數據得結構,使用鏈式得方式消耗極少對資源(指針的指向,地址得刪除)能夠對單個元素得插入刪除進行操作。
鏈表頭插法
基本操作如下:
- 新節點得next域指向頭節點的next域即可
- 頭節點的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; }
鏈表尾插法
基本操作如下:
- 先將保留尾部的指針的next域指向新節點
- 新節點的next域執行尾節點標記NULL
- 更新保留部的節點
實現如下: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语言的单链表创建:头插法/尾插法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 春不耕下一句是什么呢?
- 下一篇: 为什么我的电脑缓冲帖子里的图片特别慢,半