C言語で静的チェーンを実現します。


本論文の例では、C言語による静的チェーンの実現に関する具体的なコードを共有しています。
注意事項:
1、ここはkで空間を申請して、iは空間を遍歴します。
2、静的チェーンテーブルは、ラベルを利用してポインタをシミュレーションし、固定された割り当てのメモリを予備チェーンとチェーンテーブルの二つの大きな塊に分けて、自作のMallocとfree関数を利用して予備空間の釈放を申請する時、離散的な記憶を実現する。
3、基本操作とダイナミックチェーンは実質的に似ていますが、一つはp=p->nextを利用して、一つはi=L[i].curを使ってポインタの後進を実現します。
4、チェーンテーブルを初期化する時、最後の空間のcurだけが0であり、頭ポインタという意味で、割り当てられた空間はありません。バックアップチェーンの頭ポインタは空間の最初の位置で、最後のポインタのcurも0です。0は静的チェーンにおいてもNULLを意味する。
5、ダイナミックチェーンを使って考えてみると、curメンバーはポインタとして見られます。中にあるどのユニットの下付きはどのユニットを指すかに相当します。

#include<stdio.h>
#include<stdlib.h>
 
typedef struct
{
 int data;
 int cur;
}component, SLinkList[100];
 
int Malloc(SLinkList space)
{
 int i = space[0].cur;
 if (i)
 space[0].cur = space[i].cur;
 return i;
 
}
 
void Free(SLinkList space, int k)
{
 space[k].cur = space[0].cur;
 space[0].cur = k;
}
void Creat(SLinkList L)
{
 int i;
 L[99].cur = 0;
 for (i = 0; i < 98; i++)
 L[i].cur = i + 1;
 L[98].cur = 0;
 
}
 
int ListLength(SLinkList L)
{
 int i = 0, k = L[99].cur;
 while (k)
 {
 k = L[k].cur;
 i++;
 }
 return i;
}
 
void Insert(SLinkList L, int val, int index)
{
 int i = 99, k, n;
 k = Malloc(L);
 if (k)
 {
 L[k].data = val;
 for (n = 1; n < index; n++)
  i = L[i].cur;
 L[k].cur = L[i].cur;
 L[i].cur = k;
 }
}
 
void Traverse(SLinkList L)
{
 int i = L[99].cur;
 while (i)
 {
 printf("%d", L[i].data);
 i = L[i].cur;
 }
}
int main()
{
 SLinkList L;
 Creat(L);
 Insert(L, 1, 1);
 Traverse(L);
 printf("Please enter the number:
"); return 0; }
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。