静态链表的操作
#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; }