当前位置: 首页 > web >正文

数据结构每日一题day13(链表)★★★★★

题目描述:采用尾插法在头指针L处建立一个带头结点的单链表,输入-1表示结束结果返回建立的单链表。

算法思想:

1.初始化链表:创建一个头结点(不存储实际数据),头指针 L 指向该头结点。初始时,头结点的 next 指针为 NULL,尾指针 tail 也指向头结点。

2.循环输入数据:从用户输入中读取数据,直到输入 -1 为止。

对于每个非 -1 的数据,创建一个新节点,并将数据存入新节点的数据域。

将新节点插入到尾节点之后(即 tail->next = newNode)。

更新尾指针,使其指向新节点(即 tail = newNode)。

3.结束处理:输入 -1 后,将尾节点的 next 指针置为 NULL,表示链表结束。

4.返回链表:返回头指针 L,即建立的单链表。

复杂度分析:

时间复杂度:O(n)

空间复杂度:O(n)

代码实现:

#include <stdio.h>
#include <stdlib.h>// 定义单链表结点结构
typedef struct LNode {int data;           // 数据域struct LNode *next; // 指针域
} LNode, *LinkList;// 尾插法创建单链表
LinkList CreateList_Tail() {LinkList L = (LinkList)malloc(sizeof(LNode)); // 创建头结点L->next = NULL;                              // 头结点的next初始化为NULLLNode *tail = L;                             // 尾指针初始指向头结点int x;printf("请输入链表元素(以-1结束):\n");scanf("%d", &x);while (x != -1) {LNode *p = (LNode *)malloc(sizeof(LNode)); // 创建新结点p->data = x;                               // 赋值p->next = NULL;                            // 新结点的next为NULLtail->next = p;                            // 尾结点的next指向新结点tail = p;                                  // 更新尾指针scanf("%d", &x);}return L; // 返回头结点
}// 打印单链表
void PrintList(LinkList L) {LNode *p = L->next; // 跳过头结点printf("链表元素:");while (p != NULL) {printf("%d ", p->data);p = p->next;}printf("\n");
}int main() {LinkList L = CreateList_Tail(); // 创建链表PrintList(L);                   // 打印链表return 0;
}

http://www.xdnf.cn/news/3000.html

相关文章:

  • C语言教程(二十二):C 语言头文件详解
  • kafka消息的顺序性如何保持一致的
  • HTML Picture标签详细教程
  • 使用DDR4控制器实现多通道数据读写(十)
  • SpringBoot中获取系统及硬件信息
  • I2C、SPI、UART 协议详解:优缺点与使用场景
  • Git操作指令
  • Nacos源码—2.Nacos服务注册发现分析三
  • 数据库概论速成期中版
  • RHCE第七章:SElinux
  • 初中九年级学生体测准考证照片采集软件使用说明
  • 机器学习之五:基于解释的学习
  • 【codeforces 2104D,E】欧拉筛,字符串上dp
  • 深度剖析 RocketMQ 5.0 之消息进阶:如何支撑复杂业务消息场景?
  • 飞鸟游戏模拟器 1.0.3 | 完全免费无广告,内置大量经典童年游戏,重温美好回忆
  • React 19 用到的新特性
  • CosyVoice、F5-TTS、GPT-SoVITS、Fish-Speech声音模型项目深度对比:选型指南
  • Linux 下编译BusyBox
  • SVMSPro平台获取Websocket视频流规则
  • 设计模式每日硬核训练 Day 17:中介者模式(Mediator Pattern)完整讲解与实战应用
  • 顺序结构双链表的实现
  • 【LLM】解析RAG增强检索技术:原理、实现与应用
  • 【HCIA】VRRP
  • LeetCode 2906 统计最大元素出现至少K次的子数组(滑动窗口)
  • 软件测试基础知识详解
  • 【AI面试准备】负责所有Al产品的模型能力评估及测试,保障AI产品的质量
  • AI Agent Protocols:现状、挑战与未来展望
  • 使用VS2022开发并部署QT应用
  • Karmada 多 Kubernetes集群管理实战
  • 如何查看和验证AWS CloudFront的托管区域ID