IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 有空头单链表和无空头单链表 -> 正文阅读

[数据结构与算法]有空头单链表和无空头单链表

https://blog.csdn.net/songsong2017/article/details/88024883
初学者参照上面博客的图

指针 <- 结点地址
有空头链表

  • 头插法创建链表
//编译器vs2019
#include<stdlib.h>
#include<stdio.h>
#include<malloc.h>

typedef struct Node {
	int data;
	struct Node* next;
}Node;

//头插法创建链表
Node* head_insert(int n) {
	//创建头结点(注意结构体结点和结构体指针的区别:结构体结点用指针定义但是需要申请空间;结构体指针只需要用指针定义不用申请空间)
	Node* head = (Node*)malloc(sizeof(Node));
	head->next = NULL;

	while (n--) {
		Node* node = (Node*)malloc(sizeof(Node));
		scanf_s("%d", &node->data);//scanf不安全
		node->next = head->next;
		head->next = node;
	}
	return head;

}




void scan_list(Node* l) {
	Node* p = l; //p是指针无需申请空间
	while (p->next) {
		p = p->next;
		printf_s("%d", p->data);
	}
}

int main() {
	int n;
	scanf_s("%d", &n);
	Node* head = head_insert(n);
	scan_list(head);
	return 0;
}

  • 尾插法创建链表
Node* tail_insert(int n) {
	//创建头结点
	Node* head = (Node*)malloc(sizeof(Node));

	//定义一个尾指针
	Node* tail = head;
	tail->next = NULL;

	Node* node;
	node = head;//新节点指针指向头指针所指结点地址
	while (n--) {

		node = (Node*)malloc(sizeof(Node));//为新节点申请空间
		scanf_s("%d", &node->data);//scanf不安全;创建新节点

		tail->next = node;//表尾指针所指结点的下一个节点是node
		tail = node;//表尾指针移动到新节点
	}
	tail->next = NULL;//!!!!别忘记了
	return head;
}


void scan_list(Node* l) {
	Node* p = l; //p是指针无需申请空间
	while (p->next) {
		p = p->next;
		printf_s("%d\n", p->data);
	}
}

int main() {
	int n;
	scanf_s("%d", &n);
	Node* head = tail_insert(n);
	scan_list(head);
	return 0;
}
  • 增加结点
Node* tail_insert(int n) {
	//创建头结点
	Node* head = (Node*)malloc(sizeof(Node));

	//定义一个尾指针
	Node* tail = head;
	tail->next = 0;

	Node* node;
	node = head;//新节点指针指向头指针所指结点地址
	int num;
	while (n--) {

		node = (Node*)malloc(sizeof(Node));//为新节点申请空间
		scanf_s("%d", &node->data);//scanf不安全;创建新节点
		tail->next = node;//表尾指针所指结点的下一个节点是node
		tail = node;//表尾指针移动到新节点
	}
	tail->next = NULL;//!!!!别忘记了
	return head;
}

/*将n插到pos位*/
void insert_node(int n,int pos, Node* list) {
	Node* node = (Node*)malloc(sizeof(Node));
	node->data = n;

	//查找pos位置
	Node* p = list; 
	int cnt = 1;
	while (p->next != NULL) {
		p = p->next;
		cnt++;
		if (cnt == pos)break;
	}

	//插入
	node->next = p->next;
	p->next = node;


}

void scan_list(Node* l) {
	Node* p = l; //p是指针无需申请空间
	while (p->next) {
		p = p->next;
		printf_s("%d", p->data);
	}
}

int main() {
	int n;
	scanf_s("%d", &n);
	Node* head = tail_insert(n);
	insert_node(9, 3, head);
	scan_list(head);
	return 0;
}
  • 删除节点
/*删除pos位*/
void delete_node(int pos, Node* list) {

	//查找pos位置
	Node* p = list;
	int cnt = 1;
	while (p->next != NULL) {
		p = p->next;
		cnt++;
		if (cnt == pos)break;
	}//p指在了pos位之前

	//删除
	Node* q = p->next;
	p->next = p->next->next;
	free(q);

}

void scan_list(Node* l) {
	Node* p = l; //p是指针无需申请空间
	while (p->next) {
		p = p->next;
		printf_s("%d", p->data);
	}
}

int main() {
	int n;
	scanf_s("%d", &n);
	Node* head = tail_insert(n);
	delete_node(2, head);
	scan_list(head);
	return 0;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 00:18:38  更:2021-07-28 00:19:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 18:29:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码