首页 > 其他分享 >线性表之静态链表实现(数组cur实现)

线性表之静态链表实现(数组cur实现)

时间:2023-04-09 22:47:59浏览次数:41  
标签:线性表 space int void StaticList 链表 SL cur

main.cpp

#include "StaticList.h"

int main() {
    StaticList SL;
    InitSList(SL);
    for (int i = 0; i < 5; ++i) {
        Insert(SL,'A'+i);
    }
    ShowSList(SL);
    DeleteSList(SL);
    ShowSList(SL);
    return 0;
}

StaticList.h(头文件)

#ifndef STATICLIST_STATICLIST_H
#define STATICLIST_STATICLIST_H

#include <stdio.h>

#define MAX_SIZE 20
#define ElemType char
typedef struct ListNode {
    ElemType data;
    int cur;
} ListNode;

typedef ListNode StaticList[MAX_SIZE];

int Malloc_SL(StaticList &space);

void Free_SL(StaticList &space, int k);

void InitSList(StaticList &space);

void Insert(StaticList &space, ElemType x);

void DeleteSList(StaticList &space);

void ShowSList(StaticList &space);

#endif //STATICLIST_STATICLIST_H

StaticList.cpp

#include "StaticList.h"

void InitSList(StaticList &space) {
    for (int i = 1; i < MAX_SIZE - 1; ++i) {
        space[i].cur = i + 1;
    }
    space[MAX_SIZE - 1].cur = 0;
    space[0].cur = -1;
}

void Free_SL(StaticList &space, int k) {
    space[k].cur = space[1].cur;
    space[1].cur = k;
}

int Malloc_SL(StaticList &space) {
    int i = space[1].cur;
    if (space[1].cur != 0)
        space[1].cur = space[i].cur;
    return i;
}

void Insert(StaticList &space, ElemType x) {
    int i = Malloc_SL(space);
    if (i == 0) {
        printf("申请节点空间失败\n");
        return;
    }
    space[i].data = x;
    if (space[0].cur == -1) {
        space[i].cur = -1;

    } else {
        space[i].cur = space[0].cur;
    }
    space[0].cur = i;
}

void DeleteSList(StaticList &space) {
    int i = space[0].cur;
    space[0].cur = space[i].cur;
    Free_SL(space, i);
//    space[i].cur = space[1].cur;
//    space[1].cur = i;
}

void ShowSList(StaticList &space) {
    int i = space[0].cur;
    while (i != -1) {
        printf("%c-->", space[i].data);
        i = space[i].cur;
    }
    printf("Null");
    putchar(10);
}

标签:线性表,space,int,void,StaticList,链表,SL,cur
From: https://www.cnblogs.com/hekang520/p/17301323.html

相关文章

  • 【Java 并发】【十】【JUC数据结构】【七】ConcurrentHashMap前置篇HashMap原理
    1 前言前几节我们分析了一些并发安全的数据结构,分别是CopyOnWrite系列的CopyOnWriteArrayList、BlockingQueue阻塞队列系列的LinkedBlockingQueue、ArrayBlockingQueue、DelayQueue。接下来我们要讲解一个很重要的并发安全的数据结构,ConcurrentHashMap。在Java的数据结构里面平......
  • 线性表之单循环链表实现
    main.cpp#include"SCList.h"intmain(){Listmylist;InitList(mylist);intselect=1;ElemTypeItem;Node*p=NULL;while(select){printf("************************************\n");printf("......
  • 搜索二叉树转换成双向链表
    搜索二叉树:每个节点的左子树的值都小于当前节点,右子树的节点值都大于当前节点。其中序遍历就是一个有序的序列转化成双向链表,需要记录一下头节点,和前一个节点,将前一个节点和当前节点相连preheadconvert(pRoot){if(pRoot==null)returnnull;convert(pRoot.left);......
  • SpringSecurity之WebSecurity和HttpSecurity
    SpringSecurity启动过程中有两个重要的类。分别是WebSecurity和HttpSecurity。 看看WebSecurity的定义:publicfinalclassWebSecurityextendsAbstractConfiguredSecurityBuilder<Filter,WebSecurity>implementsSecurityBuilder<Filter>,ApplicationContextAware,Servl......
  • SpringSecurity源码之WebSecurity构建FilterChainProxy
    主要参考了https://mp.weixin.qq.com/s/D0weIKPto4lcuwl9DQpmvQ。SpringSecurity版本是2.7.9。将SpringBoot和SpringSecurity结合使用,SpringSecurity自动配置类是SecurityAutoConfiguration.class。 @AutoConfiguration@ConditionalOnClass({DefaultAuthenticationEventPubli......
  • MySQL Cursor 的定义和使用
    前言最近项目中需要迁移数据,对旧表A的每一行记录处理后插入新表B。Google一下,发现MySQLCursor适合这种场景,上篇文章介绍了handler,那么本篇就一起看下Cursor是什么吧!本文基于MySQL8.0定义我们来看看ChatGPT是怎么理解MySQLCursor的吧:我:MySQLCursor是什么......
  • SpringSecurity体系结构
    我是通过松哥的博客学习SpringSecurity的,地址是http://itboyhub.com/2021/01/26/spring-security-guide/。对SpringSecurity的使用有了初步的认识。并根据松哥的博客跟了源码,但是每个人的思路不一样,看完之后还有点模糊。对其中的一些用法不够深刻。想了下还是根据自己的思路记录下......
  • spring security自动配置的源码简单分析
    本文基于的springboot版本是2.1.3.RELEASE,用springboot来自动配置springsecurity,一、综述在springboot中使用springsecurity只需要引入如下依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId&......
  • Ficow 的 AI 平台快速上手指南(ChatGPT, NewBing, ChatGLM-6B, cursor.so)
     本文首发于FicowShen'sBlog,原文地址:Ficow的AI平台快速上手指南(ChatGPT,NewBing,ChatGLM-6B,cursor.so)。 内容概览前言OpenAI——ChatGPT微软——NewBing智谱AI——ChatGLM-6BAI生成代码——cursor.so总结 前言 现在各种AI工具大爆发,赶紧......
  • 剑指 Offer 36. 二叉搜索树与双向链表
    题目链接:剑指Offer36.二叉搜索树与双向链表方法一:回溯解题思路代码classSolution{private:intmx=INT_MIN,mi=INT_MAX;Node*start=NULL,*end=NULL;public:voidLrotate(Node*root,Node*last_root){//针对左子树,左旋if(!ro......