C:链表的操作(一),如何创建一个链表
程序员文章站
2023-01-12 22:54:36
链表是一种常见的重要的数据结构,它是动态的进行内存存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度(即元素个数),但是事先难以确定有多少个元素时,则...
链表是一种常见的重要的数据结构,它是动态的进行内存存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度(即元素个数),但是事先难以确定有多少个元素时,则必须把数组定义的足够大,以保证成功。
无疑,这会造成内存浪费,然而,链表则没有这种缺点,它可以根据需要,动态开辟内存单元。
链表中的各个元素在内存中是可以不是连续存放的,但是要找到某一元素,必须知道它的地址,这就需要链表必须有一个头指针(head)。
今天我就开始介绍一系列的链表操作,包括链表的创建,链表的输出,链表的删除,链表的插入等等。
通过学生学号和成绩来表现这一过程。
链表的创建:
#include “stdlib.h”
#include “stdio.h”
#define null 0
#define len sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(len);
scanf(“%ld,%f”,&p1->num,&p1->score);
head=null;
while(p1->num != 0)
{
n=n+1;
if(n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct student *)malloc(len);
scanf(“%ld,%f”,&p1->num,&p1->score);
}
p2->next = null;
return(head);
}
void main()
{
creat();
}
这样便可创建链表,如图:
到此,便可创建一个链表了。
请支持 李木空间
用数组存放数据时,必须事先定义固定的长度(即元素个数),但是事先难以确定有多少个元素时,则必须把数组定义的足够大,以保证成功。
无疑,这会造成内存浪费,然而,链表则没有这种缺点,它可以根据需要,动态开辟内存单元。
链表中的各个元素在内存中是可以不是连续存放的,但是要找到某一元素,必须知道它的地址,这就需要链表必须有一个头指针(head)。
今天我就开始介绍一系列的链表操作,包括链表的创建,链表的输出,链表的删除,链表的插入等等。
通过学生学号和成绩来表现这一过程。
链表的创建:
#include “stdlib.h”
#include “stdio.h”
#define null 0
#define len sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(len);
scanf(“%ld,%f”,&p1->num,&p1->score);
head=null;
while(p1->num != 0)
{
n=n+1;
if(n == 1)
head = p1;
else
p2->next = p1;
p2 = p1;
p1 = (struct student *)malloc(len);
scanf(“%ld,%f”,&p1->num,&p1->score);
}
p2->next = null;
return(head);
}
void main()
{
creat();
}
这样便可创建链表,如图:
到此,便可创建一个链表了。
请支持 李木空间
推荐阅读
-
C#实现一个简单实用的TXT文本操作及日志框架详解
-
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider
-
C#实现一个简单实用的TXT文本操作及日志框架详解
-
在ASP.NET 2.0中操作数据之六十:创建一个自定义的Database-Driven Site Map Provider
-
笔记本重做系统如何创建分区 给硬盘新建一个分区的方法介绍(图文教程)
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
c#下注册表操作的一个小细节
-
C#创建一个Word并打开的方法
-
比较全的一个C#操作word文档示例
-
链表的创建,插入,删除,输出基本操作