youhebuke52011 2015-10-10 13:13 采纳率: 0%
浏览 1416

c语言指针问题 数据结构

 #include<cstdio>
#include<cstring>
#include<cstdlib>
#include<ctime>


#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

typedef int Status;

typedef struct Book
{
    char id[20];
    char name[30];
    float price;
}Book;

typedef struct List
{
    Book book;
    struct List *next;
}List,*LinkList;



//初始化链表
Status InitList(LinkList *L)
{
    *L = (LinkList)malloc(sizeof(Book));
    if(!(*L))
        return ERROR;
    (*L)->next  = NULL;
    return OK;

}

//将L重置为空表
Status ClearList(LinkList *L)
{ 
    LinkList p,q;
    if(!(*L))
        return 0;
    p=(*L)->next;           /*  p指向第一个结点 */
    while(p)                /*  没到表尾 */
    {
        q=p->next;
        //printf("ff");
        free(p);
        p=q;
    }
    (*L)->next=NULL;        /* 头结点指针域为空 */
    return OK;
}

void AddNumber(LinkList p)
{

    strcpy(p->book.id,"1");
    strcpy(p->book.name,"平凡的世界");
    p->book.price=rand()%100+10;

}

void CreateListTail(LinkList *L,int n)
{
    LinkList p,r;
    (*L)=(LinkList)malloc(sizeof(Book));
    r=*L;
    while(n--){
        p=(LinkList)malloc(sizeof(Book));
        AddNumber(p);
        r->next=p;
        r=p;
    }
    r->next=NULL;
}

int main()
{
    LinkList L;
    InitList(&L);
    CreateListTail(&L,3);
    if(ClearList(&L))
    {
        printf("数据已经清空!\n");
    }
}

出现了这样的情况!
图片说明

求大神解释

  • 写回答

1条回答 默认 最新

  • Heafei 2015-10-10 15:14
    关注

    你的代码没有错,估计是之前debug没有关掉。你退出virtual studio,重新编译下。

    $ vim test.cpp
    $ gcc test.cpp
    $ ls
    a.out test.cpp
    $ ./a.out
    数据已经清空!

    评论

报告相同问题?

悬赏问题

  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
  • ¥15 乘性高斯噪声在深度学习网络中的应用