标题:链表插入时while(p)和while(p->Next)有何不同
取消只看楼主
c834706901
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2019-10-12
结帖率:0
已结贴  问题点数:20 回复次数:0 
链表插入时while(p)和while(p->Next)有何不同


    #include "stdio.h"
    #include "stdlib.h"
    typedef struct List
    {
    int data;
    struct List *Next;
    }Node,*NodePtr;
    NodePtr ListPtr;

    void ListInsert(NodePtr L,int i)
    {
    NodePtr p;
    NodePtr q;
    p = L;
    while(p) //在这里我用 while(p)的话程序就会卡死在这里,如果用while(p->Next)就可以正常运行,请问是为什么
    {

    p = p->Next;

    }
    q = (Node*)malloc(sizeof(Node));
    q->data = i;

    p->Next = q;
    printf("111\n");
    p=q;
    p->Next = NULL;

    }
    void ListCreatTail(NodePtr L)
    {
    *L = (Node)malloc(sizeof(Node));
    (*L)->Next = NULL;
    }

    void ListDelete(NodePtr L, int i)
    {
    int j = 1;
    NodePtr p,q;
    p=L;
    while(p,j < i)
    {
    p=p->Next;
    ++j;
    }
    q=p->Next;
    p->Next = q->Next;
    free(q);

    }

    void ListPrintf(NodePtr L)
    {
    NodePtr p;
    p=L->Next;
    while(p)
    {
    printf("%d\n",p->data);
    p=p->Next;
    }
    }

    void main()
    {

    ListCreatTail(&ListPtr);
    ListInsert(ListPtr,1);
    ListInsert(ListPtr,2);
    ListInsert(ListPtr,3);
    ListInsert(ListPtr,4);
    ListInsert(ListPtr,5);
    ListDelete(ListPtr,2);
    ListPrintf(ListPtr);
    }
搜索更多相关主题的帖子: while int Next void Node 
2019-10-12 14:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-497216-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.759724 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved