#include
<stdio
.h
>
#include
<stdlib
.h
>
#define
MAXSIZE 11
typedef struct
{
char data
;
int cursor
;
}SLinkList
[MAXSIZE];
void InitSLinkList(SLinkList
S);
void ShowSLinkList(SLinkList
S);
int
LengthSLinkList(SLinkList
S);
int
GetLinkList(SLinkList
S,int i
);
void InsertSLinkList(SLinkList
S,int i
,char data
);
void DeleteSLinkList(SLinkList
S,int i
);
void main()
{
SLinkList
S;
int len
;
InitSLinkList(S);
ShowSLinkList(S);
len
= LengthSLinkList(S);
printf("\n%d",len
);
printf("\n%d\n",GetLinkList(S,4));
InsertSLinkList(S,8,'z');
ShowSLinkList(S);
printf("\n删除后的静态链表:\n");
DeleteSLinkList(S,5);
ShowSLinkList(S);
}
void InitSLinkList(SLinkList
S)
{
int i
,k
= 0;
int c
= 0;
for(i
= 1;i
< MAXSIZE - 1;i
++)
{
S[i
- 1].cursor
= i
;
}
S[MAXSIZE - 2].cursor
= 0;
S[MAXSIZE - 1].cursor
= 0;
while(S[c
].cursor
!= 0)
{
c
= S[c
].cursor
;
S[c
].data
= 'a'+ k
;
k
++;
}
}
void ShowSLinkList(SLinkList
S)
{
int c
= 0;
while(S[c
].cursor
!= 0)
{
c
= S[c
].cursor
;
printf("%c\t",S[c
].data
);
}
}
int
LengthSLinkList(SLinkList
S)
{
int len
= 0;
int c
= 0;
while(S[c
].cursor
!= 0)
{
c
= S[c
].cursor
;
len
++;
}
return len
;
}
int
GetLinkList(SLinkList
S,int i
)
{
int c
= S[0].cursor
;
int j
= 1;
while(c
!= 0 && j
< i
)
{
c
= S[c
].cursor
;
j
++;
}
return c
;
}
void InsertSLinkList(SLinkList
S,int i
,char data
)
{
int c
,len
;
c
= GetLinkList(S,i
- 1);
if(c
== 0)
{
printf("不符合插入规则!");
exit(1);
}
else
{
len
= LengthSLinkList(S);
S[++len
].data
= data
;
S[len
].cursor
= S[c
].cursor
;
S[c
].cursor
= len
;
}
}
void DeleteSLinkList(SLinkList
S,int i
)
{
int c
;
c
= GetLinkList(S,i
-1);
if(c
== 0)
{
printf("删除位置不合法!");
exit(1);
}
else
{
if(S[c
].cursor
== 0)
{
printf("删除失败");
exit(1);
}
else
{
S[c
].cursor
= S[S[c
].cursor
].cursor
;
}
}
}
转载请注明原文地址: https://yun.8miu.com/read-109695.html