连初级都算不上的代码小白 2023-04-20 20:49 采纳率: 52.4%
浏览 40
已结题

链表指针作为函数参数的传递


#include<stdio.h>//无头节点 
#include<stdlib.h>
typedef struct List
{
    int val;
    struct List *next;
}list;
void a(list*pst)
{
    pst=pst->next;
}
int main()
{
    list *head,*last,*p;
    head=NULL;
    int i,n;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        p=(list*)malloc(sizeof(struct List));
        scanf("%d",&(p->val));
        if(head==NULL)
        {
            head=p;
            last=head;
        }
        else
        {
            last->next=p;
            last=p;
            last->next=NULL; 
        }
    }
    a(head);
    while(head)
    {
        printf("%d ",head->val);
        head=head->next;
    }
}

创建一个单向链表,把头指针head传递给函数a,a的作用是使头指针指向下一节点,为什么a没起到理想的作用

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-04-21 11:09
    关注

    原来函数的写法里,void a(list*pst) 函数形参 *pst 的作用域只在函数体内部,当函数执行完毕,这个指针变量*pst 也就释放销毁了,对主函数里调用的实参没有影响,失去了作用。修改如下,供参考:

    #include<stdio.h>//无头节点 
    #include<stdlib.h>
    typedef struct List
    {
        int val;
        struct List* next;
    }list;
    list* a(list* pst)   //void a(list* pst)  修改
    {
        pst = pst->next;
        return pst;      //修改 
    }
    int main()
    {
        list* head, * last, * p;
        head = NULL;
        int i, n;
        scanf("%d", &n);
        for (i = 0; i < n; i++)
        {
            p = (list*)malloc(sizeof(struct List));
            scanf("%d", &(p->val));
            if (head == NULL)
            {
                head = p;
                last = head;
            }
            else
            {
                last->next = p;
                last = p;
                last->next = NULL;
            }
        }
        //a(head);  //修改
        p = head;   //修改
        while (p)
        {
            printf("%d ", p->val);
            //head = head->next;    //修改
            p = a(p);               //修改
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月29日
  • 已采纳回答 4月21日
  • 创建了问题 4月20日

悬赏问题

  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动
  • ¥15 大一C语言期末考试,求帮助🙏🙏
  • ¥15 ch340驱动未分配COM
  • ¥15 Converting circular structure to JSON
  • ¥30 Hyper-v虚拟机相关问题,求解答。
  • ¥15 TSM320F2808PZA芯片 Bootloader