user-0 提问: 静态链表的操作，哎，感觉好难啊

回复:
user: user-0
content: 引用 13 楼 zhangxiangDavaid 的回复:这是在用下标模拟指针？ 是用cur来模拟指针

user: user-1
content: 这是在用下标模拟指针？

user: user-0
content: 引用 10 楼 lm_whales 的回复:静态链表，约等于静态内存池，效率可能要低一点 #include<stdio.h> struct test { 	int a; 	int cur; }; void InitSpace(struct test *space)                { 	int i; 	for (i = 0; i < 100 - 1; i++) 	{ 		space[i].cur = i + 1; 	} 	space[100 - 1].cur = 0; } int Malloc(struct test *space) { 	int i; 	i = space[0].cur; 	if (space[0].cur) 		space[0].cur = space[i].cur; 	return i; } void Free(struct test *space, int k) { 	space[k].cur = space[0].cur; 	space[0].cur = k; } int different(struct test *space)          { 	InitSpace(space); 	int  S, r, i, m, n, b, p, k; 	int j; 	S = Malloc(space);                      //S申请头结点 	r = S;                                 //r指向非备用链表的尾点 	scanf("%d", &m);                       //A的个数 	scanf("%d", &n);                      //B的个数 	for (j = 1; j <= m; j++) 	{ 		i = Malloc(space); 		scanf("%d", &space[i].a); 		space[r].cur = i;                //连接新申请的结点 		r = i;                           //更新尾结点 	} 	space[r].cur = 0;                     //最后结点为零 	for (j = 1; j <= n; j++) 	{ 		scanf("%d", &b); 		p = S;                               //p为k的上一个结点 		k = space[S].cur;                  //k指向头结点下一结点 		while (k != space[r].cur&&space[k].a != b)    //直到k指向尾结点之后或者在A中找到和A相同的 		{ 			p = k; 			k = space[k].cur; 		} 		if (k == space[r].cur)               //当前表中不存在该元素，插入r结点之后 		{                                    //r的位置不变，因为r值的是A，意味着A的查询结束 			i = Malloc(space); 			space[i].a = b; 			space[i].cur = space[r].cur; 			space[r].cur = i; 		} 		else                                    //该元素已在表中，删除之 		{ 			space[p].cur = space[k].cur; 			Free(space, k); 			if (r == k)                  //修改尾指针 				r = p; 		} 	} 	return S; } void print(struct test *space, int S) { 	int p = space[S].cur; 	while (p) 	{ 		printf("%d\n", space[p].a); 		p = space[p].cur; 	} } int main() { 	struct test space[100]; 	int S; 	S = different(space); 	print(space, S); }  自己解决了，谢谢大家的帮助

user: user-2
content: 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……

user: user-3
content: 静态链表，约等于静态内存池，效率可能要低一点

user: user-3
content: 有的语言没有指针，如果语言不提供表这一类数据结构的话， 可以使用静态链表

user: user-3
content: 静态链表，有时候可以看作是个单一类型内存分配系统

user: user-0
content: 引用 5 楼 qq_27479125 的回复:你说的应该是动态数组吧，没听说过静态链表，对动态数组的操作跟链表相似，优缺点是存储麻烦，读取效率高。因为数组空间大小不知道而且连续，，来个数据临时多分配一个数据空间，然后把之前的数组复制到新数组中，不像链表可以直接插入。 http://blog.csdn.net/jiuyueguang/article/details/12090569 就是这个里面说的

user: user-0
content: 引用 4 楼 starytx 的回复:链表和数组是完全不同的数据结构，怎么可以用数组来描述链表？数组是在内存中连续存储的一段空间。链表可能是不连续的，每个元素通过指针指向下一个元素的地址，好像用链条连着一样，所以称为链表，要访问某个元素，一般需要先从表头开始一个一个的进行遍历，数组可以直接通过下标形式来访问某个元素。 这是书上的

user: user-4
content: 你说的应该是动态数组吧，没听说过静态链表，对动态数组的操作跟链表相似，优缺点是存储麻烦，读取效率高。因为数组空间大小不知道而且连续，，来个数据临时多分配一个数据空间，然后把之前的数组复制到新数组中，不像链表可以直接插入。

user: user-5
content: 链表和数组是完全不同的数据结构，怎么可以用数组来描述链表？数组是在内存中连续存储的一段空间。链表可能是不连续的，每个元素通过指针指向下一个元素的地址，好像用链条连着一样，所以称为链表，要访问某个元素，一般需要先从表头开始一个一个的进行遍历，数组可以直接通过下标形式来访问某个元素。

user: user-6
content: 调试是程序员的基本功啊，难是因为你对算法没想清楚。 函数调试首先设计测试用例，针对每个分支。 首先加入第一个分支代码，屏蔽掉其它部分，调试Ok后加入第二个存在分支的地方，直到全部加入进去。 这个数据结构并不复杂，需要你有点耐心。

user: user-0
content: 引用 1 楼 ganxingguo 的回复:什么是静态链表？ 就是用数组来描述链表

user: user-7
content: 什么是静态链表？