#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语言中指针操作、条件判断和循环控制等技能。这一...
链表的创建可以通过 createList_1() 和 createList_2() 两个函数来实现,这两个函数的主要区别是 createList_1() 函数从文件中读取数据,而 createList_2() 函数从控制台读取数据。 链表的排序可以通过 sort_xh() ...
3. 文件操作:在处理大文件时,可以使用链表分块读取,提高内存效率。 4. 树结构:链表可以用来实现二叉树、AVL树等树形数据结构。 四、链表的优缺点 优点: - 动态扩展:链表长度可变,方便增删元素。 - 内存连续...
在数据结构的学习中,单链表是一种基础且重要的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下...通过这个实验,我们可以深入理解单链表的创建和操作,同时锻炼了动态内存管理和链表遍历的能力。
(1)键盘输入n,建立长度为n的单链表并输出; (2)键盘输入x。在单链表中查找值为x的结点并删除,最后输出链表。
### 单链表的创建与插入 #### 一、单链表基础知识 单链表是一种基本的数据结构,其中...以上就是关于“单链表的创建和插入”的全部知识点,包括了单链表的基本概念、创建过程、插入操作以及输出操作的具体实现方法。
### 带头结点的单链表创建 #### 知识点概述 在计算机科学中,链表是一种常见的线性数据结构,它通过一系列节点(每个节点包含数据和指向下一个节点的指针)来存储数据。根据是否含有头结点,链表可以分为带头结点...
这段代码首先创建一个空头节点`head`,然后在每次循环中,它会读取一行,转换为整数,创建新节点,然后将新节点添加到链表的末尾。如果链表为空,新节点就是头节点;否则,我们需要遍历链表找到最后一个节点,然后将...
在Java中,我们可以创建一个名为`Node`的类来表示链表的节点,其中包含一个`data`字段存储数据和一个`next`字段指向下一个节点。例如: ```java public class Node { int data; Node next; public Node(int ...
1. **单链表**:单链表是最基本的链表形式,每个节点包含一个数据元素和一个指向下一个节点的指针。在单链表中,我们可以通过头结点开始遍历整个链表,直到遇到空指针结束。单链表的操作包括插入、删除和查找,这些...
总结,这个PDF文件包含了三个主要的编程问题,涉及了数据结构中的基本概念和操作,包括线性表、单链表、双向循环链表的创建、操作以及特殊性质的判断。此外,还涵盖了链表拆分、回文链表判断和链表反转的算法设计。...
1. 尾插法创建链表:首先创建头结点,然后逐个读取用户输入的字符,创建新节点并将其插入到链表的末尾,直到用户输入结束符'#'。 2. 头插法创建链表:同样先创建头结点,但新节点会插入到链表的头部,即每次新节点...
这个系统利用了链表数据结构来存储和管理联系人信息,旨在帮助学习者深入理解和应用C语言,同时熟悉链表的创建、插入、删除和查找等操作。以下是对该项目涉及的知识点的详细说明: 1. **C语言基础**:C语言是一种...
本篇将基于提供的`node.h`头文件和`node.cpp`源代码,详细阐述如何通过类的方式在C语言中实现单链表的基本操作,包括创建、打印、删除、插入和反转等。 #### 一、定义节点结构体 首先,我们来看一下`node.h`文件中...
- **创建链表**:通过读取标准输入直到遇到特殊字符`*`,创建一个链表。 - **打印链表**:遍历并打印链表的所有节点。 - **逆置链表**: - 初始化两个指针`n`和`q`,其中`n`用于记录逆置后的链表头部,`q`用于遍历...
链表分为单链表、双链表和循环链表等类型。 1. 单链表:每个节点只有一个指向下一个节点的指针,最后一个节点的指针为NULL,表示链表的结束。 2. 双链表:除了有指向前一个节点的指针外,还有指向后一个节点的指针...
1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯 2、将学号重复的删除 3、显示导入的学生信息(文件加...4、按学号、姓名、性别、籍贯相等和不相等查找 5、多次查找 6、查找结果写入文件 7、VC++6.0编译通过
创建函数`create()`读取用户输入的节点数量和数据,动态分配内存创建新的节点,并将它们链接起来形成链表。如果链表为空,则新创建的节点成为头节点;否则,新节点链接到最后一个节点之后,从而扩展了链表。 ### ...
8. 主要实验思路:主要实验思路是创建 student 结构体和 seqlist 链表操作类,并使用模板类来实现链表的泛型操作。 9. 实验设计:实验设计包括采用的关键技术、主要实验思路和解决方案等。 10. 实验实现:实验实现...
通过以上代码示例可以看出,单链表的插入操作主要包括创建新节点、设置新节点的数据和指针,以及调整链表中现有节点的链接关系。这些步骤确保了链表结构的完整性,并使得链表能够灵活地扩展和调整其大小。对于理解和...