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语言的单链表创建:头插法/尾插法的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 春不耕下一句是什么呢?
- 下一篇: C语言的单链表求交点