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

<dl id="bxxfd"><video id="bxxfd"></video></dl>

<sub id="bxxfd"><delect id="bxxfd"><ins id="bxxfd"></ins></delect></sub>

      <address id="bxxfd"><var id="bxxfd"></var></address>
      <sub id="bxxfd"><dfn id="bxxfd"><ins id="bxxfd"></ins></dfn></sub>

      <form id="bxxfd"><listing id="bxxfd"></listing></form>

      <thead id="bxxfd"><delect id="bxxfd"><output id="bxxfd"></output></delect></thead>

      <thead id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></thead><sub id="bxxfd"><var id="bxxfd"><output id="bxxfd"></output></var></sub>
      <sub id="bxxfd"><var id="bxxfd"><ruby id="bxxfd"></ruby></var></sub>
      <address id="bxxfd"><dfn id="bxxfd"></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);
      
      
      
      }
      相关文章
      相关标签/搜索
      三十码期期必中√资料2020年香港马会最快手机报码开奖结果现场直播历史查询记录二四六天天好彩免费资料大全网