关于链表的游标实现
#include"stdio.h"#define CursorSpace 100
typedef int pertonode;
typedef pertonode Position;
typedef pertonode List;
struct Node{
int X;
Position Next;
};
struct Node CursorList[CursorSpace];//定义数组
void InitializeCursorList(void){//初始化数组
int i = 0;
for (i = 0; i < CursorSpace; i++) {
CursorList[i].Next = i + 1;
}
CursorList[CursorSpace - 1].Next = 0;
}
static Position CursorAlloc(){
Position P;
P = CursorList[0].Next;//这个每次调用的时候不都是把p=1了吗?
printf("%d\n",P); //当插入调用此函数的时候为什么 输出的p是 1 2 3 4 5?
CursorList[0].Next = CursorList[P].Next;
CursorList[P].Next = 0;
return P;
}
void Insert(List L, Position P, int X){ //插入
Position tmp;
tmp = CursorAlloc();
CursorList[tmp].X = X;
CursorList[tmp].Next = CursorList[P].Next;
CursorList[P].Next = tmp;
}
void Print(List L){ 输出数组
Position P = CursorList[L].Next;
while (P != 0) {
printf("%d ",CursorList[P].X);
P = CursorList[P].Next;
}
printf("\n");
}
int main()
{
printf("start ...\n");
InitializeCursorList();
List L = CursorAlloc();
Insert(L, L, 1);
Insert(L, L, 3);
Insert(L, L, 5);
Insert(L, L, 4);
Print(L);
return 0;
}
输出的结果为什么是 1 2 3 4 5
4 5 3 1 ??
新手求解答啊。
[ 本帖最后由 Maps 于 2015-3-22 22:43 编辑 ]