<sub id="jd1jz"><var id="jd1jz"></var></sub>

<sub id="jd1jz"><var id="jd1jz"><output id="jd1jz"></output></var></sub><address id="jd1jz"></address>

<address id="jd1jz"><dfn id="jd1jz"></dfn></address>

    <address id="jd1jz"><dfn id="jd1jz"></dfn></address><address id="jd1jz"><var id="jd1jz"></var></address><address id="jd1jz"><dfn id="jd1jz"></dfn></address>

    <address id="jd1jz"><dfn id="jd1jz"></dfn></address>

        【数据结构】静态链表的实现(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("\n");
        }
        
        
        int main() {
            StaticLinkList L;
            InitList(L);
        
            for(int i=1; i<=5; i++){
                ListInsert(L, i);
            }
        
            Visit(L);
        
        
        
        }
        相关文章
        相关标签/搜索
        381818香港藏宝阁资料