c语言输出链表按照年龄大小,c语言 链表

一下是我从一本参考书 看到的代码,大家可以参考:

/*

1.链表的创建过程是一个动态的创建过程

链表不是一开始就设定好自身大小的,而是根据节点的多少决定的

2.mallo()函数

在内存中动态的分配指定大小的内存空间

返回一个指针,该指针指向分配的内存空间,出错则返回 NULL

3.calloc()函数

void *calloc(unsigned n,unsigned size);

在内存中动态分配n个长度为size 的连续内存空间爱数组。

该函数返回一个指针,该指针指向动态分配的连续内存空间,出错则返回 NULL

4.free()函数

释放内存空间

*/

#include

#include

//结构体

struct Student

{

char name[20];

int number;

struct Student *pNext;//指向下一个节点的指针

};

//定义全局变量,表示链表长度

int iCount;

//定义函数creat,用来创建列表

struct Student* creat()

{

struct Student *pHead=NULL;//初始化链表头指针为空

struct Student *pEnd,*pNew;

iCount=0;//初始化链表长度

pEnd=pNew=(struct Student *)malloc(sizeof(struct Student));//分配空间

printf("请输入姓名:\n");

scanf("%s",pNew->name);

printf("请输入学号:\n");

scanf("%d",&pNew->number);

while (pNew->number!=0) {

iCount++;

if (iCount==1) {

pNew->pNext=pHead;

pEnd=pNew;

pHead=pNew;

}

else

{

pNew->pNext=NULL;

pEnd->pNext=pNew;

pEnd=pNew;

}

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

printf("请输入姓名:\n");

scanf("%s",pNew->name);

printf("请输入学号:\n");

scanf("%d",&pNew->number);

}

free(pNew);

return pHead;

}

//输出链表

void show(struct Student *pHead)

{

struct Student *pTemp;

int iIndex=1;

printf("链表有成有%d个",iCount);

printf("\n");

pTemp=pHead;

while (pTemp != NULL) {

printf("the NO%d member is:\n",iIndex);

printf("the name is: %s\n",pTemp->name);

printf("the number is:%d",pTemp->number);

printf("\n");

pTemp=pTemp->pNext;

iIndex++;

}

}

//链表的插入操作

struct Student *Insert(struct Student *pHead)

{

struct Student *pNew;

printf("—Insert member at first- \n");

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

printf("请输入姓名:\n");

scanf("%s",pNew->name);

printf("请输入学号:\n");

scanf("%d",&pNew->number);

pNew->pNext=pHead;

iCount++;

return pHead;

}

//链表的删除

void delete(struct Student* pHead,int iIndex)

{

struct Student *pTemp;

struct Student *pPre;//要删除节点前的节点

pTemp=pHead;

pPre=pTemp;

printf("--delete NO%d member",iIndex);

for (int i=0; i

pPre=pTemp;

pTemp=pTemp->pNext;

}

pPre->pNext=pTemp->pNext;

free(pTemp);

iCount--;

}

int main(int argc, const char * argv[])

{

struct Student *pStu;

pStu=creat();

pStu=Insert(pStu);

delete(pStu, 2);

// printf("%s",pStu->name);

show(pStu);

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值