<address id="1dp7b"></address>
<sub id="1dp7b"></sub>

      <sub id="1dp7b"></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);
          
          
          
          }
          相关文章
          相关标签/搜索
          九龙心水三肖永不改料香港开奖结果_香港马会2020开奖结果_2020 最快开奖记录结果_小鱼儿玄机2站开奖 开奖结果