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

  1. 数据结构每日一题day12(链表)★★★★★

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

算法思想:

1.初始化头结点:创建头结点,并使其指针域初始化为NULL。

2.循环插入元素:

不断接收用户输入的整数值,若输入为-1则停止。

为新元素动态分配结点空间,将数据存入结点。

使用头插法将新结点插入头结点之后。

返回链表:最终返回头指针L。

复杂度分析:

时间复杂度:O(n)

空间复杂度:O(n)

代码实现:

cpp 复制代码
#include <stdio.h>
#include <stdlib.h>

typedef struct LNode {
    int data;               // 数据域
    struct LNode *next;     // 指针域
} LNode, *LinkList;

LinkList CreateList_HeadInsert() {
    LinkList L = (LinkList)malloc(sizeof(LNode));  // 创建头结点
    L->next = NULL;                               // 初始为空链表
    LNode *s;                                     // 用于创建新结点
    int x;                                        // 用户输入的值

    printf("请输入元素(输入-1结束):");
    scanf("%d", &x);
    while (x != -1) {
        s = (LNode*)malloc(sizeof(LNode));        // 创建新结点
        s->data = x;                              // 存入数据
        s->next = L->next;                        // 新结点指向原首结点
        L->next = s;                              // 头结点指向新结点
        scanf("%d", &x);                          // 继续输入
    }
    return L;                                     // 返回头指针
}
相关推荐
小朩1 小时前
数据结构C语言
数据结构·c#·1024程序员节
搂鱼1145141 小时前
GJOI 10.20/10.22 题解
算法
我搞slam1 小时前
插入区间--leetcode
算法·leetcode
前进之路91 小时前
Leetcode每日一练--40
算法·leetcode
Swift社区1 小时前
LeetCode 405 - 数字转换为十六进制数
算法·leetcode·职场和发展
赵杰伦cpp1 小时前
数据结构——二叉搜索树深度解析
开发语言·数据结构·c++·算法
大数据张老师1 小时前
数据结构——希尔排序
数据结构·算法·排序算法·1024程序员节
第七序章2 小时前
【C + +】unordered_set 和 unordered_map 的用法、区别、性能全解析
数据结构·c++·人工智能·算法·哈希算法·1024程序员节
草莓熊Lotso2 小时前
《算法闯关指南:优选算法--二分查找》--23.寻找旋转排序数组中的最小值,24.点名
开发语言·c++·算法·1024程序员节
文火冰糖的硅基工坊3 小时前
[嵌入式系统-150]:智能机器人(具身智能)内部的嵌入式系统以及各自的功能、硬件架构、操作系统、软件架构
android·linux·算法·ubuntu·机器人·硬件架构