zoukankan      html  css  js  c++  java
  • 【数据结构】静态链表的实现(C语言描述)

    #include <stdio.h>
    #include "stdlib.h"
    
    
    #define OK 1
    #define ERROR 0
    #define TRUE 1
    #define FALSE 0
    
    #define MAXSIZE 1000    // 定义线性表最大容量
    
    typedef int Status;
    typedef int ElemType;
    
    
    // 定义静态链表的存储结构
    typedef struct
    {
        ElemType  data;     // 数据域
        int       curr;     // 存放下一个节点在数组中的下标
    } Node;
    
    // 定义StaticLinkList
    typedef Node StaticLinkList[MAXSIZE] ;
    
    // 先初始化一个备用的静态表(其实是数组)
    // L[0].curr = 1, L[1].curr = 2, L[2].curr = 3 ...
    Status InitList(StaticLinkList L){
    
        for(int i=0; i< MAXSIZE; i++){
            L[i].curr = i+1;
        }
        // 当前静态链表为空表,最后一个元素所指向的下一个元素的下标为0(也就是指向一个元素)
        L[MAXSIZE-1].curr = 0;
    
        return  OK;
    }
    
    // 获取空闲元素的下标 并将下标存放在L[0].curr 中
    int GetBlankIndex(StaticLinkList L){
        // L[0].curr 始终存的是空闲元素的下标
        int blankIndex = L[0].curr;
        if (L[0].curr) L[0].curr = L[blankIndex].curr;
    
        return  blankIndex;
    }
    
    
    Status ListInsert(StaticLinkList L, ElemType e){
    
        int blankIndex = GetBlankIndex(L);
    
        L[blankIndex].data = e;
    
        return OK;
    }
    
    
    // 删除第i个元素
    Status ListDelete(StaticLinkList L, int i){
    
        return  OK;
    }
    
    
    void Visit(StaticLinkList L){
        int blankIndex = GetBlankIndex(L);
    
        for (int i = 1; i < blankIndex; ++i) {
            printf("%d ",L[i].data);
        }
        printf("
    ");
    }
    
    
    int main() {
        StaticLinkList L;
        InitList(L);
    
        for(int i=1; i<=5; i++){
            ListInsert(L, i);
        }
    
        Visit(L);
    
    
    
    }
    
    “年轻时,我没受过多少系统教育,但什么书都读。读得最多的是诗,包括烂诗,我坚信烂诗早晚会让我邂逅好诗。” by. 马尔克斯
  • 相关阅读:
    java中return在Try-Catch中的执行顺序
    面向对象软件开发方法概述
    内部类
    JAVA中的继承
    错题分析
    【cocos2d-x 手游研发小技巧(1)自定义制作怪物伤害数值】
    【cocos2d-x 手游研发----地图活起来了】
    【cocos2d-x 手游研发----精灵的八面玲珑】
    【cocos2d-x 手游研发----研发思路及感想】
    通俗易懂的讲解区块链
  • 原文地址:https://www.cnblogs.com/jzsg/p/11220202.html
Copyright © 2011-2022 走看看