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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?