这是书里的内容,想要实现创建链表并将链表输出,可我这个一运行就停止运行了?求解答
发表在C语言图书答疑 2017-02-14
是否精华
版块置顶:

#include<stdio.h>
#include<stdlib.h>
struct Student
{
 char cName[20];
 int iNumber;
 struct Student *pNext;
};
//节点由数据部分和指针部分两部分构成
int iCount;//链表长度
struct Student *Create()
{
 struct Student *pHead = NULL;
 struct Student *pEnd, *pNew;
 iCount = 0;
 pEnd = pNew = (struct Student *)malloc(sizeof(struct Student));//结构体Student分配一个特定大小的动态内存
 scanf_s("%s",&pNew->cName);
 scanf_s("%d",&pNew->iNumber);
 while (pNew->iNumber != 0)
 {
  iCount++;
  if (iCount == 1)//此时链表有一个节点
  {
   pNew->pNext = NULL;
   pNew = pEnd;
   pHead = pNew;
  }
  else
  {
   pNew->pNext = NULL;
   pEnd->pNext = pNew;
   pEnd = pNew;
  }
  pNew = (struct Student *)malloc(sizeof(struct Student));
  scanf_s("%s", &pNew->cName);
  scanf_s("%d", &pNew->iNumber);
 }
 free(pNew);
 return pHead;
};
#include<stdio.h>
struct Print(struct Student* pHead)//将链表的头指针放入Print函数中
{
 struct Student* pTemp;
 int ilndex = 1;
 printf("---这个链表中有%d个成员---\n", ilndex);
 pTemp = pHead;
 while (!pTemp = NULL)
 {
  printf("成员号是 %d", ilndex);
  printf("成员姓名是 %d", pTemp->cName);
  printf("学号是 %d\n", pTemp->iNumber);
  pTemp = pTemp->pNext;
  ilndex++;
 }
}

分享到:
精彩评论 1
again
学分:250 LV4
2017-02-14
沙发

哪本书,第几版?多少页?

程序只申请了一次内存,最后还释放掉了。。

这样再打印时,就出错了。


// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。

//


#include "stdafx.h"

#if 1

#include<stdio.h>

#include<stdlib.h>

struct Student

{

    char nName[20];

    int num;

    struct Student* pNext;

};


int iCount;


struct Student* create()

{

    struct Student* pHead = NULL;

    struct Student* pEnd, *pNew;

    pEnd = pNew = (struct Student*)malloc(sizeof(struct Student));

    iCount = 0;

    scanf_s("%s", pNew->nName, sizeof(pNew->nName)/*20*/);

    scanf_s("%d", &pNew->num);

    while (pNew->num != 0)

    {

        iCount++;

        if (iCount == 1) {

            pNew->pNext = NULL;

            pEnd = pNew;

            pHead = pEnd;

        }

        else {

            pNew->pNext = NULL;

            pEnd->pNext = pNew;

            pHead = pEnd;

        }

        // 继续下一个

        pNew = (struct Student*)malloc(sizeof(struct Student));

        scanf_s("%s", pNew->nName, sizeof(pNew->nName)/*20*/);

        scanf_s("%d", &pNew->num);

    }

    return pHead;

}

void Print(struct Student* pHead)

{

    struct Student* pTemp;

    pTemp = pHead;

    while (pTemp != NULL)

    {

        printf("%s", pTemp->nName);

        printf("%d", pTemp->num);

        pTemp = pTemp->pNext;

    }


}

int main()

{

    struct Student* pHead;

    pHead = create();

    Print(pHead);

    return 0;

}

#endif


首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照