<thead id="tzpj7"></thead>

        <sub id="tzpj7"></sub>
        <address id="tzpj7"></address>

            <sub id="tzpj7"></sub>

                【数据结构】静态链表的实现(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);
                
                
                
                }
                相关文章
                相关标签/搜索
                管家婆中特王中王开+奖结果出