把链表转入成一个函数

第一次的尝试,暴力下移,直接提出来构造一个函数。

有一个问题。这个函数中我们要修改head,但是原函数是不修改的

可以按照算法书上的方案来进行,

定义一个全局变量。

但是全局变量是有害的,这个只能起一次作用,如果这个程序中有n多个链表呢

这次的修改,不同,返回了head,有了一定的优化。

缺点是程序员得非常认真的使用这个函数。如果忘了,程序就错误了。

第三种方案

这里传入一个指针的指针进去。

第四种有点复杂的哦

那就是再次定义一个结构体List

好处在于,我们用了一种自己定义的数据结构来表示链表。

这个给我们以后来进行更大的操作,埋下了无限的可能。

#include <stdio.h>
#include <stdlib.h>

typedef struct _note{
    int value;
    struct _note *next;
}Node;

typedef struct _list{
    Node*head;
}List;

void add(List *pList,int number);

int main()
{
    List list;
    int number;
    //  指针的主要步骤定义一个头
    list.head = NULL;
    while (scanf("%d",&number)&&number+1){
        add(&list,number);
    }
    return 0;
}
void add(List *pList,int n){
    Node *p = (Node*)malloc(sizeof(Node));
    p->value = n;
    p->next = NULL;
    //  现在我要遍历找到原来储存的最后一个链表节点
    Node *last = pList->head;
    //还要判断那个last有没有数据,可能只有head
    if (last){
        while (last->next){
            last = last->next;
        }
        last->next = p;//    哈哈,把p给接上了
    }else {
        pList->head = p;
    }
}

这个就是我目前接触到最牛逼的东西了

特别一点的地方:链表的遍历

附上原稿。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值