`

链表:单链表的创建和读取

 
阅读更多
#include <stdio.h>
#include <malloc.h>

// 单链表的类型定义
typedef struct Grade_Info *pointer;
struct Grade_Info
{
	int score;
	pointer next;
};
typedef struct Grade_Info NODE;


int main()
{
	NODE *head, *tail, *pnew;
	int score;

	/*
	 * 创建空链表
	 */
	// malloc前必须加指针类型转换符
	// 因为返回值是空类型的指针,一般和左边的指针变量类型相同
	head = (NODE *)malloc(sizeof(NODE));
	head->next = NULL;			// 头节点的指针域置NULL
	tail = head;				// 开始时尾指针指向头指针

	/*
	 * 链表赋值
	 */
	printf("input the score of students:\n");
	while ( 1 )
	{
		scanf("%d", &score );
		if ( score < 0 )	
			break;								// 输入负数则赋值结束,跳出循环
		
		pnew = (NODE *)malloc(sizeof(NODE));	// 创建新节点
		pnew->score = score;					// 新节点数据域放输入的成绩
		pnew->next = NULL;						// 新节点指针域置NULL

		tail->next = pnew;						// 新节点插入到链表尾
		tail = pnew;							// 尾指针指向当前的尾节点
	}
	

	/*
	 * 链表读取并记录表长
	 */
	NODE *p;
	p = head->next;

	int length = 0;
	while ( p != NULL )
	{
		printf("%d\n", p->score);
		p = p->next; 
		length ++;
	}
	printf("length is %d\n", length);
	
	return 0;
}


分享到:
评论

相关推荐

    数据结构c语言版单链表的创建和输出

    (1)键盘输入n,建立长度为n的单链表并输出; (2)键盘输入x。在单链表中查找值为x的结点并删除,最后输出链表。

    单链表及文件操作 从txt文件中读取数据并自动建立单链表

    1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯 2、将学号重复的删除 3、显示导入的学生信息(文件加...4、按学号、姓名、性别、籍贯相等和不相等查找 5、多次查找 6、查找结果写入文件 7、VC++6.0编译通过

    C语言之单向链表详解及实例代码

    单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有...

    C#,单向链表(Simply Linked List)快速排序(Quick Sort)算法与源代码

    单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有...

    数据结构实验课之单链表类实现和顺序栈实现

    5)查找操作: 查找值为 x 的元素在单链表中出现的位置(是链表中的第几个元素)。 3、 为便于观察程序的运行结果,设计的输出函数能在屏幕上以规范、 直观的形式输出计算结果。 例如将链 表输出成如下形式: [1]-&gt;...

    C语言 基于单链表的班级通讯录.rar

    通过提示信息,让用户将一条通讯录记录的各个字段信息输入内存,构成一个单链表元素,然后将其作为一个整体插入单链表最后一条记录之后,该功能在读取文件信息,创建单链表是也需要用到。 (4)需要实现查询功能,...

    单链表实现的多项式运算.cpp

    利用单链表的数据结构,在读取数据时就按指数次方排序好,再加法的运算中可以直接按指数的大小进行运算,相比随机的读入数据,这个方法优化了程序。乘法则是在加法的基础上把每一项的系数进行相乘并最后求和。注意...

    基于数组和链表的学生信息管理系统(c语言程序设计实训)

    (6)定义函数:实现输出所有学生信息的功能(包括学生的平均分和总分)。 (7)定义函数Max:求所有学生某门课程的最高分,并将此学生的分数以及学生姓名输出(注意:当有多名相同最高分数时,可将所有学生姓名输出)。...

    链表的19个基本操作

    2.创建线性表,此函数输入负数终止读取数据 3.打印链表,链表的遍历 4.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表 5.返回单链表的长度 6.检查单链表是否为空,若为空则返回1,否则返回...

    基于C++实现的超市商品管理系统链表【100013042】

    1、 创建单链表并将其定义为新类型 goodlist ,同时定义inventory为链表头节点。 2、 使用c语言文件操作函数fopen , fclose , fprintf , fscanf与fprintf_s,fscanf_s等打开指定txt文件,并读取txt文件内容。 3、 将...

    C语言单链表实现19个功能完全详解.rar

    创建线性表,此函数输入负数终止读取数据*//* 3.打印链表,链表的遍历*//* 4.清除线性表L中的所有元素,即释放单链表L中所有的结点,使之成为一个空表 *//* 5.返回单链表的长度 *//* 6.检查单链表是否为空,若为空则...

    数据结构 课程设计 双链表实例-信息处理 (包含文件读写,关键字词查找)

    printf(" * A:创建/读取文件 B:输出 *\n"); printf(" * *\n"); printf(" * C:查找 D:删除 *\n"); printf(" * *\n"); printf(" * E:排序 F:添加 *\n"); printf(" * *\n"); printf(" * G:更改 H:保存文件 *\n")...

    studentsystem.7z

    C语言实现的一个使用单链表的学生管理系统,使用文件存储学生信息,结构体中包括学号、姓名和成绩,实现的功能有系统初始化(创建链表,读取文件中的信息到链表),添加学生记录,根据学号删除学生记录,根据学号...

    数据结构实验(含源码)

    (2)实现创建学生成绩链表函数void Build(XscjLink &T),输入学号、姓名、手机号、邮箱地址、籍贯、A分成绩、B分成绩,建议用文件操作来输入数据; (3)实现函数void Update(XscjLink T, char *Name, float *ScoreA),...

    数据结构实验.zip

    实现功能:采用结构化程序设计思想,编程实现客房管理程序的各个功能函数,从而熟练掌握单链表的创建、输出、查找、修改、插入、删除、排序和复杂综合应用等操作的算法实现。以带表头结点的单链表为存储结构,实现...

    C/C++:二叉排序树.rar(含完整注释)

    设二叉排序树的二叉链表存储结构的类型定义如下: typedef struct node{ int data; //用整数表示一个结点的名 struct node *LChild,*RChild; //左右指针域 }BSTNode,*BSTree; 设计算法并编写程序求解以下几个问题...

    C语言通用范例开发金典.part2.rar

    1.4.2 获得二叉树的深度和根(链表结构) 144 范例1-56 获得二叉树的深度和根 144 ∷相关函数:BiTreeDepth函数 Root函数 1.4.3 树的插入(顺序结构) 147 范例1-57 树的插入 147 ∷相关函数:InsertChild函数 ...

    C语言通用范例开发金典.part1.rar

    1.4.2 获得二叉树的深度和根(链表结构) 144 范例1-56 获得二叉树的深度和根 144 ∷相关函数:BiTreeDepth函数 Root函数 1.4.3 树的插入(顺序结构) 147 范例1-57 树的插入 147 ∷相关函数:InsertChild函数 ...

    C 开发金典

    1.4.2 获得二叉树的深度和根(链表结构) 144 范例1-56 获得二叉树的深度和根 144 ∷相关函数:BiTreeDepth函数 Root函数 1.4.3 树的插入(顺序结构) 147 范例1-57 树的插入 147 ∷相关函数:InsertChild函数 ...

    数据结构(C++)有关练习题

    b. 创建一个班机链表,每个节点都包含指向一个乘客链表的指针; c. 该程序要有顾客购票,查询班机起飞降落时间,班机订票情况等3个功能,并实现菜单选项 5、 用C++编写一个简单的行编辑器,每个结点保存一...

Global site tag (gtag.js) - Google Analytics