[데이터 구조] 정적 링크StaticLinkList
#include "string.h"
#include "ctype.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 1000 /* */
typedef int Status; /* Status , , OK */
typedef char ElemType; /* ElemType , char */
Status visit(ElemType c)
{
printf("%c ",c);
return OK;
}
/* */
typedef struct
{
ElemType data;
int cur; /* (Cursor) , 0 */
} Component,StaticLinkList[MAXSIZE];
/* space ,space[0].cur ,"0" */
Status InitList(StaticLinkList space)
{
int i;
for (i=0; i<MAXSIZE-1; i++)
space[i].cur = i+1;
space[MAXSIZE-1].cur = 0; /* , cur 0 */
return OK;
}
/* , , 0 */
int Malloc_SSL(StaticLinkList space)
{
int i = space[0].cur; /* cur */
/* */
if (space[0]. cur)
space[0]. cur = space[i].cur; /* , */
/* */
/* */
return i;
}
/* k */
void Free_SSL(StaticLinkList space, int k)
{
space[k].cur = space[0].cur; /* cur cur */
space[0].cur = k; /* cur */
}
/* : L 。 : L */
int ListLength(StaticLinkList L)
{
int j=0;
int i=L[MAXSIZE-1].cur;
while(i)
{
i=L[i].cur;
j++;
}
return j;
}
/* L i e */
Status ListInsert(StaticLinkList L, int i, ElemType e)
{
int j, k, l;
k = MAXSIZE - 1; /* k */
if (i < 1 || i > ListLength(L) + 1)
return ERROR;
j = Malloc_SSL(L); /* */
if (j)
{
L[j].data = e; /* data */
for(l = 1; l <= i - 1; l++) /* i */
k = L[k].cur;
L[j].cur = L[k].cur; /* i cur cur */
L[k].cur = j; /* i ur */
return OK;
}
return ERROR;
}
/* L i */
Status ListDelete(StaticLinkList L, int i)
{
int j, k;
if (i < 1 || i > ListLength(L))
return ERROR;
k = MAXSIZE - 1;
for (j = 1; j <= i - 1; j++)
k = L[k].cur;
j = L[k].cur;
L[k].cur = L[j].cur;
Free_SSL(L, j);
return OK;
}
Status ListTraverse(StaticLinkList L)
{
int j=0;
int i=L[MAXSIZE-1].cur;
while(i)
{
visit(L[i].data);
i=L[i].cur;
j++;
}
return j;
printf("
");
return OK;
}
int main()
{
StaticLinkList L;
Status i;
i=InitList(L);
printf(" L :L.length=%d
",ListLength(L));
i=ListInsert(L,1,'F');
i=ListInsert(L,1,'E');
i=ListInsert(L,1,'D');
i=ListInsert(L,1,'B');
i=ListInsert(L,1,'A');
printf("
L FEDBA :
L.data=");
ListTraverse(L);
i=ListInsert(L,3,'C');
printf("
L “B” “D” “C” :
L.data=");
ListTraverse(L);
i=ListDelete(L,1);
printf("
L “A” :
L.data=");
ListTraverse(L);
printf("
");
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.