#include <stdio.h>
#define maxSize 6
typedef struct{
int data;
int cur;
}component;
void reserveArr(component *array){
for(int i=0;i<maxSize;i++){
array[i].cur = i+1;
array[i].data= -1;
}
array[maxSize-1].cur = 0;
}
int mallocArr(component * array){
int i = array[0].cur;
if(array[0].cur){
array[0].cur = array[i].cur;
}
return i;
}
int initArr(component *array){
reserveArr(array);
int body = mallocArr(array);
int tempBody = body;
for(int i=0;i<4;i++){
int j = mallocArr(array);
array[tempBody].cur = j;
array[j].data = i;
tempBody =j;
}
array[tempBody].cur = 0;
return body;
}
void displayArr(component * array,int body){
int tempBody = body;
while(array[tempBody].cur){
printf("%d,%d ",array[tempBody].data,array[tempBody].cur);
tempBody = array[tempBody].cur;
}
printf("%d,%d\n",array[tempBody].data,array[tempBody].cur);
}
void insertArr(component * array, int body, int add, int elem){
int tempBody = body;
for(int i=1;i<add;i++){
tempBody = array[tempBody].cur;
}
int insert = mallocArr(array);
array[insert].data = elem;
array[insert].cur = array[tempBody].cur;
array[tempBody].cur = insert;
}
void freeArr(component * array,int k){
array[k].cur = array[0].cur;
array[0].cur = k;
}
void deleArr(component * array,int body,int elem){
int tempBody = body;
while(array[tempBody].data!=elem){
tempBody = array[tempBody].cur;
if(tempBody == 0){
printf("链表中没有此数据");
return;
}
}
int del = tempBody;
tempBody = body;
while(array[tempBody].cur!=del){
tempBody = array[tempBody].cur;
}
array[tempBody].cur = array[del].cur;
freeArr(array, del);
}
int selectElem(component * array, int body,int elem){
int tempBody = body;
while(array[tempBody].cur!=0){
if(array[tempBody].data == elem){
return tempBody;
}
tempBody = array[tempBody].cur;
}
return -1;
}
void updateElem(component * array,int body, int oldElem, int newElem){
int add = selectElem(array, body, oldElem);
if(add == -1){
printf("无更改元素");
return;
}
array[add].data = newElem;
}
int main () {
component array[maxSize];
int body = initArr(array);
printf("静态链表为:\n");
displayArr(array,body);
insertArr(array,body,3,6);
displayArr(array,body);
return 0;
}