您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习问题笔记之单链表

2014-08-07 15:40 232 查看
今天复习了单链表的创建,偶然发现单链表初始化的时候,参数是一个双重指针。

typedef struct Node
{
DataType data;
struct Node *next;
}ListNode,*LinkList;

void(LinkList *head) \\为什么要定义二重指针啊?

原因如下:

1、指针是一种变量类型,自身在32位操作系统中的大小是4个字节,因为32位CPU的地址总线位宽是32位,指针的值是内存地址,我们知道,一个函数如果参数是值传递,那么传入函数体的是一份实参的拷贝,实际并不作用于该实参变量,而指针也是一样的,传入函数体的也是一份指针拷贝,这份拷贝指向于和原指针相同的地址,修改这份拷贝的值,也就是它的地址将毫无意义,只有修改其指向的内容才会实际作用到指向物。现在已经接近你的问题了,如果要使用函数使指针参数的值改变,也就是让它的指向改变,其方法就是使该指针成为二级指针,二级指针的内容是一个指针值,这样做改变就可以实际作用到指针指向。2、在初始化链表的时候,我们用到了2级指针为什么呢?因为我们希望在InitLinkList函数生成的头结点,主函数中也能指向这个头结点。如果我们用一级指针的话,用malloc分配空间的时候,它将会返回分配空间的首地址给指针变量Lnode,而不能使空间被主函数中指针变量L得到这个地址。所以我们要用2级指针。参考文章:http://www.360doc.com/content/12/0422/10/1317564_205594082.shtml
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: