静态链表的操作

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
#define MAXSIZE 20
#define ERROR 0
#define OK 1
#define FALSE 0
#define TRUE 1
typedef int Status;
typedef int ElemType;
//定义静态链表结构 
typedef struct{
    ElemType data;
    int cur;
}Node,StaticLinkList[MAXSIZE];
//创建静态链表
Status InitList(StaticLinkList space){
    int i;
    for(i=0;i<MAXSIZE-1;i++){
        space[i].cur=i+1;
    }
    space[i].cur=0;
    return OK;
} 
//在第i个元素前插入新元素 
Status InsertList(StaticLinkList L,int i,ElemType e){
    int j,k,l;
    if(i<1||i>MAXSIZE-1)
        return ERROR;
    j=L[0].cur;
    k=MAXSIZE-1;
    if(j){
        L[j].data=e;
        for(l=1;l<=i-1;l++)
            k=L[k].cur;
        L[0].cur=L[j].cur;
        L[j].cur=L[k].cur;
        L[k].cur=j;
        return OK;
    }
    return ERROR;
}
//回收节点到备用链表
void Free(StaticLinkList space,int k){
    space[k].cur=space[0].cur;
    space[0].cur=k;
} 
//删除节点 
Status ListDelete(StaticLinkList space,int i){
    int j,k;
    j=MAXSIZE-1;
    for(k=1;k<=i-1;k++)
        j=space[j].cur;
    k=space[j].cur;
    space[j].cur=space[k].cur;
    Free(space,k);
    return OK;
}

 

posted @ 2021-07-20 10:45  不负韶华。  阅读(57)  评论(0编辑  收藏  举报