静态链表代码分析

本文介绍了如何用C语言实现静态链表,包括初始化、插入元素、删除元素和打印链表的功能。通过一个单元测试展示了操作过程。
摘要由CSDN通过智能技术生成

#include <stdio.h>
#include <malloc.h>

#define DEFAULT_SIZE 5

typedef struct StaticLinkedNode{
    char data;

    int next;
} *NodePtr;

typedef struct StaticLinkedList{
    NodePtr nodes;
    int* used;
} *ListPtr;

/**
 * Initialize the list with a header.
 * @return The pointer to the header.
 */
ListPtr initLinkedList(){
    // The pointer to the whole list space.
    ListPtr tempPtr = (ListPtr)malloc(sizeof(struct StaticLinkedList));

    // Allocate total space.
    tempPtr->nodes = (NodePtr)malloc(sizeof(struct StaticLinkedNode) * DEFAULT_SIZE);
    tempPtr->used = (int*)malloc(sizeof(int) * DEFAULT_SIZE);

    // The first node is the header.
    tempPtr->nodes[0].data = '\0';
    tempPtr->nodes[0].next = -1;

    // Only the first node is used

近年来,APM进入了一个高速发展的快车道,分布式环境下的应用自动发现及动态调用链路分析作为APM的核心功能在APM的推广中也获得了广泛的使用,但在实践中,也暴露出了一些不足:完全基于运行态的分析模式决定了其只能获取到有实际调用的逻辑链路,大量没有埋点或未被触发的调用逻辑则成了“失落的世界”,无法触碰。 寻找这部分“失落的世界”对我们了解分布式环境下的应用全貌至关重要,天弘基金移动平台团队在这方面做了一些创新性的探索,我们跳出了传统APM的惯性思维,通过对海量代码中的调用关系的扫描分析来获取分布式环境下“前中后”台的完整调用链路,并在此基础上叠加动态调用链来构建精细化的APM监控。 通过本专题,我将基于我们的实践来详细介绍“静态调用链路发现”的技术与手段,并探索运维及开发场景中如何将它和现有的APM能力进行结合。 -->听众受益: 1、了解分布式环境下APM的“优”与“缺”。 2、了解构建“静态调用链路发现”能力的技术与手段。 3、了解如何用创新性的思维拓展APM的应用场景。 -->个人简介: 李鑫,天弘基金(余额宝)移动平台首席架构师,负责移动平台总体技术架构设计。曾任当当网架构师,负责电商后端运作产品平台整体技术架构和研发团队管理;华为云计算专家,主导了华为软件多款云计算产品和服务的设计规划和构建工作。 个人技术涉及大规模分布式应用及治理、中间件云化及服务化(PaaS)、APM 监控、基础开发平台等领域,有多年大规模复杂系统架构实践经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值