user-0 提问: 初学数据结构，陷入伪代码的泥淖

回复:
user: user-1
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……

user: user-2
content: 问题3中的，L.elem[i]，这个elem是struct的结构体中的成员。比如下面这个例子：struct Node{     int name;     int no;     int[] elem; }; struct Node L;这样L就有了elem成员，要取出该成员时可以这样，L.elem[0]，其他的成员就是L.name什么的

user: user-3
content: 至于问题三: 你看的是严蔚敏的那版数据结构吧

user: user-2
content: 引用 22 楼 u012686437 的回复:左边newbase不就是一个指针名吗，右面表示的不就是elemtype类型的指针吗。我前面已经定义了newbase是elemtype类型的..所以左边直接用newbase不行吗 你如果定义过了，=左边直接用newbase就可以了，如果没定义过，一般用的是malloc。realloc是重新分配内存空间的时候用的。

user: user-3
content: 问题二: 取地址符的问题,首先我们说说取地址符的作用,&这个符号,可以做取地址符也可以做引用. 取地址符是指针和&结合使用,引用是变量和&结合使用,注意引用申明必须初始化,作用就是给一个变量另一个名字. 好,接下来结合你的问题.在函数的声明中,形参使用&是对调用函数时的实参的引用,优点在于直接访问实参,无需拷贝一个副本,如果函数改变了实参的值,那么结果会对实参有影响,若不用&,即对实参先拷贝一个副本,再使用这个副本,函数对实参无影响.  其实,用&和不用看函数是否需要对实参进行实质性的改变.

user: user-0
content: 引用 20 楼 oOo532200 的回复:问题一: 当然可以不要*,首先我们分析一下这句代码,ElementType是个类型,声明了*newBase(翻译为基址,很明显是指向申请空间的首地址),后面分为两部分,(ElementType *)和realloc(...),我们先说后面的,后面是申请内存空间,看看realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);函数意义是:指针名=（数据类型*）realloc（要改变内存大小的指针名，新的大小）,如果你不要* ,你得先知道realloc分配空间的首地址,再用ElementType类型的指针指向这段新分配的空间首地址.之所以用指针,是因为指针的地址是系统分配的,我们可以很方便的通过指针指向我们所希望的对象,不用考虑newBase的地址当然要是想知道这段地址也是可以通过指针获取到的.为什么需要*,是因为realloc函数定义就是这么写的,我们只是调用.左边newbase不就是一个指针名吗，右面表示的不就是elemtype类型的指针吗。我前面已经定义了newbase是elemtype类型的..所以左边直接用newbase不行吗

user: user-0
content: 引用 19 楼 Adol1111 的回复:[quote=引用 17 楼 u012686437 的回复:] 好吧，看来阁下所认为的C基础要比我们这些菜鸟高多了，我不知道啥叫引用，知识水平有限！！ 说了半天，为什么感觉你还是不能虚心接受一下呢？如果你要争论我也没办法，需要的知识都跟你说过了。如果你想了解下引用的话，我也给你举个例子吧，希望你能理解下。 int a=0; int* p; p=&a;//这里是一个取地址，把a的地址取出来赋给p,是C语言的基础 int& b=a;//这里是一个引用，一个引用相当于给另一个变量取别名，注意看&的位置就知道了 [/quote]好吧。挺好理解的。就是被代码弄得挺恼火的。

user: user-3
content: 问题一: 当然可以不要*,首先我们分析一下这句代码,ElementType是个类型,声明了*newBase(翻译为基址,很明显是指向申请空间的首地址),后面分为两部分,(ElementType *)和realloc(...),我们先说后面的,后面是申请内存空间,看看realloc原型是extern void *realloc(void *mem_address, unsigned int newsize);函数意义是:指针名=（数据类型*）realloc（要改变内存大小的指针名，新的大小）,如果你不要* ,你得先知道realloc分配空间的首地址,再用ElementType类型的指针指向这段新分配的空间首地址.之所以用指针,是因为指针的地址是系统分配的,我们可以很方便的通过指针指向我们所希望的对象,不用考虑newBase的地址当然要是想知道这段地址也是可以通过指针获取到的.为什么需要*,是因为realloc函数定义就是这么写的,我们只是调用.

user: user-2
content: 引用 17 楼 u012686437 的回复:好吧，看来阁下所认为的C基础要比我们这些菜鸟高多了，我不知道啥叫引用，知识水平有限！！ 说了半天，为什么感觉你还是不能虚心接受一下呢？如果你要争论我也没办法，需要的知识都跟你说过了。如果你想了解下引用的话，我也给你举个例子吧，希望你能理解下。 int a=0; int* p; p=&a;//这里是一个取地址，把a的地址取出来赋给p,是C语言的基础 int& b=a;//这里是一个引用，一个引用相当于给另一个变量取别名，注意看&的位置就知道了

user: user-2
content: 伪代码是有很多，但用伪代码是因为跟语法无关，不必因为语言不同而造成理解问题，实现的话需要你自己去翻译。但你贴出的代码都是C语言的。我给你举一段伪代码的例子： QUICKSORT(A，p，r) 1　if p<r 2　then q ←PARTITION(A，p，r) 3　QUICKSORT(A，p，q-1) 4　QUICKSORT(A，q+1，r)  PARTITION(A，p，r) 1　x←A[r] 2　i←p-1 3　for j←p to r-1 4　do if A[j]≤x 5　then i←i+1 6　exchange A[i]←→A[j] 7　exchange A[i+1]←→A[r] 8　return i+1 这是快速排序的伪代码，他只是表述了整个方法的流程，没有涉及任何语言的语法。

user: user-0
content: 引用 16 楼 Adol1111 的回复:[quote=引用 12 楼 u012686437 的回复:] 既然你这么说。那我肯定地告诉你，这就是严蔚敏那本说是用C写的数据结构。。但是里面出现了大量的伪代码和C++中的引用。这是有人才告诉我的。你说我说用C看不懂有没有道理！！！！ 我说的是C语言基础书籍，如果没有这些就不要算一本真正的C语言书。 还有不要以为用了&就是引用，严蔚敏那本书，没有一个引用，只是取地址而已，不要混淆概念了。如果有人告诉你是C++的引用，那你就应该好好找那个人问清楚，为什么是引用。 严蔚敏那本书用了很多你说的内容是事实，但这些不代表跟C基础无关。这些都是C里最常用的东西，你应该先了解下这些C语言的基础吧。[/quote]好吧，看来阁下所认为的C基础要比我们这些菜鸟高多了，我不知道啥叫引用，知识水平有限！！

user: user-2
content: 引用 12 楼 u012686437 的回复:既然你这么说。那我肯定地告诉你，这就是严蔚敏那本说是用C写的数据结构。。但是里面出现了大量的伪代码和C++中的引用。这是有人才告诉我的。你说我说用C看不懂有没有道理！！！！ 我说的是C语言基础书籍，如果没有这些就不要算一本真正的C语言书。 还有不要以为用了&就是引用，严蔚敏那本书，没有一个引用，只是取地址而已，不要混淆概念了。如果有人告诉你是C++的引用，那你就应该好好找那个人问清楚，为什么是引用。 严蔚敏那本书用了很多你说的内容是事实，但这些不代表跟C基础无关。这些都是C里最常用的东西，你应该先了解下这些C语言的基础吧。

user: user-0
content: 引用 5 楼 baipv008 的回复:[quote=引用 2 楼 u012686437 的回复:] 拜托，我在c中根本就没有见过这种写法！！  你在c中没写过？ 1 char *p=malloc(100);//前面不加char？ 2 void foo(int a, int b);//a前面一定要有&？ 3 struct {char elem[10]} L;    L.elem[0]=1;  //有问题？[/quote]1如果前面已经定义了p的类型，在这里还需要加上char吗？2看数据结构就会出现加地址的。不知道你看过严蔚敏那本没有。3我是想问线性表是包括数组吗，如果包括，这样写没错。但为什么说数组是属于线性表呢，他不就是个线性表吗。

user: user-0
content: 引用 7 楼 AnYidan 的回复:[quote=引用 3 楼 u012686437 的回复:] [quote=引用 1 楼 max_min_ 的回复:] 这个和数据结构没有关系！ 是c语言基础没有过关吧！都是基础知识！找本书补补基础！...我在c中根本就没见过这种语法！！！！[/quote]  LZ 读的c 和我们看的不同[/quote]C中的确没有引用这个概念！！！

user: user-4
content: 伪代码比具体代码更抽象，更稳定。

user: user-0
content: 引用 9 楼 Adol1111 的回复:[quote=引用 3 楼 u012686437 的回复:] [quote=引用 1 楼 max_min_ 的回复:] 这个和数据结构没有关系！ 是c语言基础没有过关吧！都是基础知识！找本书补补基础！...我在c中根本就没见过这种语法！！！！[/quote]没见过不代表没有吧，你都说是初学了，就应该听听人家的意见。既然提示你是C的语法了，应该回去补下C吧，这都是C的语法基础了。 如果你坚持没看过，那我也没办法。如果是你看的那本书，从头到尾没出现过，那你先确定是不是讲C的，如果是的话，建议你丢了，重新换一本。[/quote]既然你这么说。那我肯定地告诉你，这就是严蔚敏那本说是用C写的数据结构。。但是里面出现了大量的伪代码和C++中的引用。这是有人才告诉我的。你说我说用C看不懂有没有道理！！！！

user: user-0
content: 引用 4 楼 wsx199397 的回复:ElemType指得是elememt type也就是元素类型，这个应该换成你需要的类型，比如int float...... 或者用typedef。  void LocateElem_Sq(SqList L, ElemTy pe e)；这个应该是函数声明，在L加上&不就成C++引用了吗。但是看到其他基本操作比如删除插入初始化什么的都加了地址。。严蔚敏那本书说是用c写的，但是鱼龙混杂不知道可能用了C++。。看不懂

user: user-2
content: 引用 3 楼 u012686437 的回复:[quote=引用 1 楼 max_min_ 的回复:] 这个和数据结构没有关系！ 是c语言基础没有过关吧！都是基础知识！找本书补补基础！...我在c中根本就没见过这种语法！！！！[/quote]没见过不代表没有吧，你都说是初学了，就应该听听人家的意见。既然提示你是C的语法了，应该回去补下C吧，这都是C的语法基础了。 如果你坚持没看过，那我也没办法。如果是你看的那本书，从头到尾没出现过，那你先确定是不是讲C的，如果是的话，建议你丢了，重新换一本。

user: user-5
content: 我记得大学的这本教程里头，里边的sample，前提都是有使用一个通用的定义吧

user: user-0
content: 引用 1 楼 max_min_ 的回复:这个和数据结构没有关系！ 是c语言基础没有过关吧！都是基础知识！找本书补补基础！...我在c中根本就没见过这种语法！！！！