麻zer法ker 2021-08-10 09:18 采纳率: 100%
浏览 103
已结题

学生党,有没有耐心的看一下,为什么每次从 Initlist_L 函数出来之后 l 的内存都会被释放,导致遍历函数出错?

typedef int ElemType;





typedef struct Node{       
    ElemType data;        
    struct Node* next;     
}Node,*LinkList;      


int main(int argc, const char * argv[]) {
    LinkList l = NULL;
    
    if( !Initlist_L( l ) ){
        PrintList_L( l );      //遍历链表元素
    }else {
        printf( "分配内存失败." );
    }
}

int Initlist_L( LinkList l ){      //创建链表并初始化
    int a,b;
    int c = 0;
    Node* p,*q = NULL;
    l = (LinkList)malloc(sizeof(Node));
    l->next = NULL;               //创建头结点
    if( !l ){
        return -1;
    }
    printf( "是否输入数据?Yes:1;No: 0" );
    scanf( "%d",&a );
    while( a ){
        if( !(c++) ){
        p = (Node*)malloc(sizeof(Node));
        printf( "请输入数据:");
        scanf( "%d",&b );
        p->data = b;
        p->next = l->next;
        l->next = p;
        q = p;
        }else {
            p = (Node*)malloc(sizeof(Node));
            printf( "请输入数据:");
            scanf( "%d",&b );
            p->data = b;
            q->next = p;
            p->next = NULL;
            q = p;
        }
        printf( "是否继续输入数据?Yes: 1; No: 0");
        scanf( "%d",&a );

    }
    printf( "\n" );
    return 0;
};      


  • 写回答

3条回答 默认 最新

  • qzjhjxj 2021-08-10 09:38
    关注

    函数:int Initlist_L(LinkList &l) 形参加上地址引用即可 。
    第58行:}; 多了 ‘ ; '号

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月18日
  • 已采纳回答 8月10日
  • 创建了问题 8月10日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路