C:链表的操作(一),如何创建一个链表
来源:互联网 发布:2017网络新名词 编辑:程序博客网 时间:2024/05/14 09:09
链表是一种常见的重要的数据结构,它是动态的进行内存存储分配的一种结构。
用数组存放数据时,必须事先定义固定的长度(即元素个数),但是事先难以确定有多少个元素时,则必须把数组定义的足够大,以保证成功。
无疑,这会造成内存浪费,然而,链表则没有这种缺点,它可以根据需要,动态开辟内存单元。
链表中的各个元素在内存中是可以不是连续存放的,但是要找到某一元素,必须知道它的地址,这就需要链表必须有一个头指针(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:链表的操作(一),如何创建一个链表
- C:链表的操作,如何创建一个链表并打印
- 如何创建一个链表(链栈:一)
- C:链表的操作(二),如何输出一个链表
- 链表知识点(一)【单链表的创建操作】
- 如何创建一个链表
- 如何创建一颗二叉链表的二叉树?
- 一个链表创建、反转、打印的C语言代码
- 如何创建一个链表(链栈:二)
- 链表(一)——创建一个最基本的单向链表
- 如何创建一个Mavlink Message(一)
- c语言:顺序表的实现(一) 创建,插入,删除,查找,输出等基本操作实现
- C语言实现线性结构创建动态链表的学习心得(一)
- 如何创建根据一个表的结构创建另一个表。
- 双向链表的C语言实现与基本操作(一)
- 关于链表的创建和对链表的操作--C语言
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- 创建链表(一)
- x264里的2pass指的是什么意思? x264源代码分析2.encode()
- java 随机生成字符串 (字母和数字)
- Java----泛型
- Centos下安装带界面压缩解压工具file-roller
- JDK配置环境变量
- C:链表的操作(一),如何创建一个链表
- 对C# 中Readonly的再认识
- android面试题目大全<第三部分>,java高级综合部分
- 【xinfanqie】任务管理器恢复使用的小办法
- VS2010中c++程序调用PostgreSQL数据库C接口libpq.lib的项目Properties设置
- Linux下/proc目录简介
- rac环境磁阵迁移
- navigaiton的出栈方式
- Collection和Collections的区别