| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 611 人关注过本帖
标题:关于链表的游标实现
取消只看楼主 加入收藏
Maps
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2015-3-8
结帖率:66.67%
收藏
已结贴  问题点数:30 回复次数:1 
关于链表的游标实现
#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 编辑 ]
搜索更多相关主题的帖子: include 
2015-03-22 19:50
Maps
Rank: 2
等 级:论坛游民
帖 子:16
专家分:10
注 册:2015-3-8
收藏
得分:0 
回复 2楼 longwu9t
呃。。这样确实麻烦了点。。主要是想明白为什么那样可以输出。。

看到了编程大海的一角,我还在努力的寻找方向,
2015-03-22 22:41
快速回复:关于链表的游标实现
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028704 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved