关于链表的最后一个节点的地址

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:10:46
链表中,最后一个节点的地址没有赋给任何值,但是很多函数都以该节点的next是否等于NULL当条件,这样有没有问题呢,我的程序在dev c上运行还是没有问题的,但是在VC上就不对了,哪位大侠详细解释一下

这关系到你的程序的通用性了,就像你所说的 devcpp上面可以,但VC就不行了,那么为了都能正常运行 你就在申请节点空间的时候用构造函数 或者手动将指针成员next置为NULL不就得了吗, 养成一个好习惯是最重要的,编程也是如此

null一般就是0,地址0是无法访问的,所以就用这个表示空地址
不过你至少也得把错误信息贴出来吧

代码如下:
#include<cstdlib>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define Status int
#define ElemType int

typedef struct LNode{
ElemType data1;
ElemType data2;
LNode *next;
}*LinkList;

Status GetElem_L(LinkList &L,int i, ElemType &e1,ElemType e2) { // 算法2.8
// L为带头结点的单链表的头指针。
// 当第i个元素存在时,其值赋给e并返回OK,否则返回ERROR
LinkList p;
p = L->next;
int j = 1; // 初始化,p指向第一个结点,j为计数器
while (p && j<i) { // 顺指针向后查找,直到p指向第i个元素或p为空
p = p->next; ++j;
}
if ( !p || j>i ) return ERROR; // 第i个元素不存