用C语言实现有头节点的链表的创建和打印输出

一起来学单链表吧!

文章目录

文章目录

前言

一、代码

二、运行结果

三.小知识 


前言

本文主要讲述如何用C语言创建一个有头节点的单链表并打印输出。


一、代码

//c语言实现有头节点的链表
#include "stdio.h"
#include "malloc.h"

struct student {
	//定义了一个结构体,包含两个域
   
	int data;//数据域,用来存放数据
	struct student *next;//指针域,用来存放地址
};
	
struct student *createList();
void printList (struct student *head);//函数申明 

main(){
	struct student *head;
	head=createList(); 
	printList(head);//函数调用 
}
	
struct student *createList(){
	struct student *head;
	struct student *q;
	struct student *p;
	int data;
	
	head=(struct student *)malloc(sizeof(struct student ));
	//创建了一个头节点,与无头结点的链表相比,浪费了一个空间,节约了时间 
    head->next=NULL;
    q=head;
    
    /*
	q=head;
	q->next=NULL;
	//这种方法也可以,先让q指向头节点,再让q->next为空 
	*/
	 
	scanf("%d",&data);
	while(data!=0)
	{
		p=(struct student *)malloc(sizeof(struct student));
		//动态分配存储空间 
		p->data=data;
		//给p->data的房子里放data的值,值传递 
		q->next=p;//连接节点 
		q=q->next;//q指向当前链表的最后一个节点 
		
		scanf("%d",&data);
	}
	q->next=NULL;
	return head;
} 

void printList(struct student *head){
	struct student *phead;
	phead=head->next;
	while(phead!=NULL){
		printf("%4d",phead->data);
		phead=phead->next;
	}
	printf("\n");
}

二、运行结果

1 3 5 0
   1   3   5

--------------------------------
Process exited after 4.448 seconds with return value 10
请按任意键继续. . .





三.小知识 

1.malloc是动态分配存储空间,程序运行结束后,malloc出的部分不消失。

2.与无头节点的单链表相比,有头节点的链表虽然浪费了一个空间,但它节约了时间,不用每次都判断q和head是否为空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值