单链表中二级指针

单链表中二级指针

ID:20359774

大小:143.00 KB

页数:7页

时间:2018-10-12

单链表中二级指针_第1页
单链表中二级指针_第2页
单链表中二级指针_第3页
单链表中二级指针_第4页
单链表中二级指针_第5页
资源描述:

《单链表中二级指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、先来看C语言创建链表、插入节点和遍历链表的一段代码:C代码  1.#include   2.#include   3.  4.typedef int ElemType;  5.  6.typedef struct Node{  7.    ElemType elem;  8.    struct Node *next;  9.}Node, *LinkedList;  10.  11.//void init_linkedlist(LinkedList *lis

2、t) {  12.void init_linkedlist(LinkedList *list) {  13.    *list = (LinkedList)malloc(sizeof(Node));  14.    (*list)->next = NULL;  15.}  16.  17.void insert(LinkedList list, ElemType elem) {  18.    Node *p, *q;  19.    q = list;  20.    p = (Node *)

3、malloc(sizeof(Node));  1.    p->elem = elem;  2.    p->next = NULL;  3.    while(q->next != NULL) q = q->next;  4.    q->next = p;  5.}  6.  7.void main() {  8.    LinkedList list, p;  9.    init_linkedlist(&list);  10.    insert(list, 3);  11.    in

4、sert(list, 4);  12.    insert(list, 5);  13.    p = list->next;  14.    while(p != NULL) {  15.        printf("%4d", p->elem);  16.        p = p->next;  17.    }  18.    printf("");  19.}   这个小程序完成的功能很简单,创建一个链表,然后插入3,4,5这三个整数,最后遍历链表输出每个节点中的整数。但是大家注

5、意到没有,在main函数中,初始化链表的函数参数的是一个二级指针,为什么要使用一个二级指针作为参数呢?在任何一本C语言的教材上,都会写C语言的函数参数传递是值传递方式,所有的参数都是通过值传递的,使用指针作为参数可以在函数中改变参数的值(此处感觉表达有误,但是想不到更好的表达方式)。可能有人会有疑问了,在上面代码的main函数中初始化链表的调用函数代码Java代码  1.init_linkedlist(&list);   list已经是一个指针了,为什么要传递一个指针的地址,直接使用指针不行吗?

6、确实不行。为什么?那么我们来看看不使用二级指针会发生什么情况,先来看看不使用二级指针的代码:C代码  1.#include   2.#include   3.  4.typedef int ElemType;  5.  6.typedef struct Node{  7.    ElemType elem;  8.    struct Node *next;  9.}Node, *LinkedList;  10.  11.  12.void init_lin

7、kedlist(Node *list) {  13.    list = (LinkedList)malloc(sizeof(Node));  14.    list->next = NULL;  15.}  16.  17.void insert(LinkedList list, ElemType elem) {  1.    Node *p, *q;  2.    q = list;  3.    p = (Node *)malloc(sizeof(Node));  4.    p->ele

8、m = elem;  5.    p->next = NULL;  6.    while(q->next != NULL) q = q->next;  7.    q->next = p;  8.}  9.  10.void main() {  11.    LinkedList list, p;  12.    printf("%d", list);  13.    init_linkedlist(list);  14.    printf("%d", list);  15.}   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。