菜鸟求大解答一下
#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));
printf("please first enter Name ,then Number\n");
scanf("%s",&pNew->cName);
scanf("%d",&pNew->iNumber);
while(pNew->iNumber!=0)
{
iCount++;
if(iCount==1)
{
pNew->pNext=pHead; /*使得指向为空*/
pEnd=pNew; /*跟踪新加入的结点*/
pHead=pNew; /*头指针指向首结点*/
}
else
{
pNew->pNext=NULL; /*新结点的指针为空*/
pEnd->pNext=pNew; /*原来的为节点指向新结点*/
pEnd=pNew; /*pEnd指向新结点*/
} 这段代码看的我头晕眼花,希望大神帮忙解释一下
pNew=(struct Student*)malloc(sizeof(struct Student)); /*再次分配结点内存空间*/
scanf("%s",&pNew->cName);
scanf("%d",&pNew->iNumber);
}
free(pNew); /*释放没有用到的空间*/
return pHead;
}
void Print(struct Student* pHead)
{
struct Student *pTemp; /*循环所用的临时指针*/ 这是怎么循环的???
int iIndex=1; /*表示链表中结点的序号*/
printf("----the List has %d members:----\n",iCount); /*消息提示*/
printf("\n"); /*换行*/
pTemp=pHead; /*指针得到首结点的地址*/
while(pTemp!=NULL)
{
printf("the NO%d member is:\n",iIndex);
printf("the name is: %s\n",pTemp->cName); /*输出姓名*/
printf("the number is: %d\n",pTemp->iNumber); /*输出学号*/
printf("\n"); /*输出换行*/
pTemp=pTemp->pNext; /*移动临时指针到下一个结点*/
iIndex++; /*进行自加运算*/
}
}
int main()
{
struct Student* pHead; /*定义头结点*/
pHead=Create(); /*创建结点*/
Print(pHead); /*输出链表*/
return 0; /*程序结束*/
}
#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));
printf("please first enter Name ,then Number\n");
scanf("%s",&pNew->cName);
scanf("%d",&pNew->iNumber);
while(pNew->iNumber!=0)
{
iCount++;
if(iCount==1)
{
pNew->pNext=pHead; /*使得指向为空*/
pEnd=pNew; /*跟踪新加入的结点*/
pHead=pNew; /*头指针指向首结点*/
}
else
{
pNew->pNext=NULL; /*新结点的指针为空*/
pEnd->pNext=pNew; /*原来的为节点指向新结点*/
pEnd=pNew; /*pEnd指向新结点*/
} 这段代码看的我头晕眼花,希望大神帮忙解释一下
pNew=(struct Student*)malloc(sizeof(struct Student)); /*再次分配结点内存空间*/
scanf("%s",&pNew->cName);
scanf("%d",&pNew->iNumber);
}
free(pNew); /*释放没有用到的空间*/
return pHead;
}
void Print(struct Student* pHead)
{
struct Student *pTemp; /*循环所用的临时指针*/ 这是怎么循环的???
int iIndex=1; /*表示链表中结点的序号*/
printf("----the List has %d members:----\n",iCount); /*消息提示*/
printf("\n"); /*换行*/
pTemp=pHead; /*指针得到首结点的地址*/
while(pTemp!=NULL)
{
printf("the NO%d member is:\n",iIndex);
printf("the name is: %s\n",pTemp->cName); /*输出姓名*/
printf("the number is: %d\n",pTemp->iNumber); /*输出学号*/
printf("\n"); /*输出换行*/
pTemp=pTemp->pNext; /*移动临时指针到下一个结点*/
iIndex++; /*进行自加运算*/
}
}
int main()
{
struct Student* pHead; /*定义头结点*/
pHead=Create(); /*创建结点*/
Print(pHead); /*输出链表*/
return 0; /*程序结束*/
}
...全文
相关推荐
菜鸟宝典:局域网常见问题解答
菜鸟宝典:局域网常见问题解答电子书,基础教材!!!
从Java菜鸟到专家的资料
这份名为“从Java菜鸟到专家的资料”的压缩包文件包含了丰富的学习资源,旨在帮助初学者逐步成长为Java领域的专家。以下是对各个文件的详细解读:1.
清华尹成C语言从菜鸟到高手.pdf
"《清华尹成C语言从菜鸟到高手》是一本系统介绍C语言学习路径的教程,旨在帮助读者从零基础逐渐成长为C语言的高手。该书分为三个主要部分:C语言的基础入门、跨平台编程实践和深入理解数据类型、运算符与表达式
菜鸟教程之Diy留言动画教程
**阅读和理解`readme.txt`**:压缩包中的`readme.txt`文件通常包含教程的概述、安装步骤、注意事项和可能的常见问题解答,确保先阅读这个文件,以便顺利开始学习。
Java菜鸟进阶宝典
《Thinking in Java 3th Edition习题及答案》.chm是对《Think In Java》配套习题的解答,通过实践加深对理论的理解。


