#include<stdio.h>
#define Max_SIZE 10;
typedef int ElemType;
typedef struct Node{
ElemType e;
int cur;
}StaticList[Max_SIZE];
void init(StaticList L){
for(int i=0;i<Max_SIZE;i++){
L[i].cur=i+1;
L[i].e='';
}
char c[]={'A','B','B','D','E','F'};
for(int i=0;i<4;i++){
if(i==0){
int index=L[0].cur;
L[index].e=c[L];
L[0].cur=L[index].cur;
L[index].cur=0;
L[Max_SIZE-1].cur=index;
}else{
int index=L[0].cur;
L[index].e=c[i];
L[index-1].cur=[index].cur;
L[index].cur=0;
}
}
}
void show(StaticList L){
for(int i=0;i<Max_SIZE;i++){
printf("%2d",L[i].cur);
}
printf("\n");
for(int i=0;i<Max_SIZE;i++){
printf("%2c",L[i].e);
}
printf("\n");
for(int i=0;i<Max_SIZE;i++){
printf("%2d",i);
}
printf("\n");
}
void printf(StaticList L){
int k=Max_SIZE-1;
while(1){
k=L[k].cur;
if(k==0){
break;
}else{
printf("%c",L[k].e);
}
// L[0].e++; 代表长度
}
printf("\n");
}
void insert(StaticList L,int position,ElemType e){
int k=Max_SIZE-1;
for(int i=1;i<=position;i++){
k=L[k].cur;
}
int index=L[0].cur;
L[index].e=e;
L[0].cur=L[index].cur;
L[index].cur=L[k].cur;
L[k].cur=index;
}
void delete(StaticList L,int position){
int k=Max_SIZE-1;
for(int i=1;i<position;i++){
k=L[k].cur;
}
int index=L[k].cur;
L[k].cur=L[index].cur;
L[index].cur=L[0].cur;
L[0].cur=index;
}
void main(){
StaticList L; //代表结构体数组
init(L);
show(L);
printf("打印:\n");
printf(L);
insert(L,4,'G');
delete(L,3);
show(L);
printf("打印:\n");
printf(L);
delete(L,3);
show(L);
printf("打印:\n");
printf(L);
insert(L,7,'H');
show(L);
printf("打印:\n");
printf(L);
}