m0_61684943 2022-09-24 17:25 采纳率: 73.8%
浏览 25
已结题

一个关于创建双向链表的问题

一个关于创建双向链表的问题。
感觉下面这张图里画横线的两个地方输出应该相同啊,为啥主函数里printf出来全是0.

img

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


typedef struct DuLNode
{
    int data;
    struct DuLNode *prior;
    struct DuLNode *next;
}DuLNode,*DuLinkList;

void Create(DuLNode *p,DuLNode *move,int e)
{
    DuLNode s;
    DuLinkList ps=&s;
    ps=(DuLinkList)malloc(sizeof(DuLNode));
    ps->data=e;
    ps->prior=move;
    move->next=ps;
    ps->next=p;
    p->prior=ps;
    move=move->next;
    printf("%d\n",move->data);
}

int main()
{
    int a[100000],b,len=0;
    while(1)
    {
        scanf("%d",&b);
        if(b==-1) break;
        else a[len]=b,len++;
    }
    DuLNode s;
    DuLinkList p=&s,move=p;
    p=(DuLinkList)malloc(sizeof(DuLNode));
    p->data=-1,p->next=p,p->prior=p;
    for(int i=0;i<len;i++)
        Create(p,move,a[i]),printf("%d\n",move->data);
    return 0;
}


  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-09-24 18:13
    关注

    37行没必要啊,p已经指向s了啊,干嘛又分配空间
    你这个move指向的是s的地址,但37行又改了p的地址,所以move和p已经不是一个东西了
    这么改就好了,move改为指针的指针,才能实现在函数里改变move自身的地址

    #include <stdio.h>
    #include <stdlib.h>
     
     
    typedef struct DuLNode
    {
        int data;
        struct DuLNode *prior;
        struct DuLNode *next;
    }DuLNode,*DuLinkList;
     
    void Create(DuLNode *p,DuLNode **move,int e)
    {
        DuLinkList ps=(DuLinkList)malloc(sizeof(DuLNode));
        ps->data=e;
        ps->prior=(*move);
        (*move)->next=ps;
        ps->next=p;
        p->prior=ps;
        (*move)=(*move)->next;
        printf("%d\n",(*move)->data);
    }
     
    int main()
    {
        int a[100000],b,len=0;
        while(1)
        {
            scanf("%d",&b);
            if(b==-1) break;
            else a[len]=b,len++;
        }
        DuLinkList p=(DuLinkList)malloc(sizeof(DuLNode));
        DuLinkList move = p;
        p->data=-1,p->next=p,p->prior=p;
        for(int i=0;i<len;i++)
            Create(p,&move,a[i]),printf("%d\n",move->data);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月25日
  • 已采纳回答 9月25日
  • 创建了问题 9月24日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效