C语言实现线性结构创建动态链表的学习心得(一)
2007-11-01 09:24
501 查看
/*处理动态链表所需要的函数
1、malloc函数
原型为: void *malloc(unsigned int size);
其作用是在动态存储区中分配一个长度为size的连续空间。
此函数返回值是一个指向分配域起始地址的指针(基类型为void).如果此函数未能分配成功地执行(例如内存空间不足)则返回空指针(NULL).
void型是指(void指针型类型,可定义一个指针变量,但不指定它是指向哪一种类型数据。void类型的指针指向一个抽象的类型的数据,
如果要使void型指针赋新值,得进行强制类型转换。例(struct student *p)将void类型的指针P强制转换成struct student类型
2、calloc函数
原型:void *calloc(unsigned n,unsigned size);
其作用是在内存的动态区存储中分配n个长度为size的连续空间,函数返回一个指向分配起始域地址的指针;如果分配不成功,返回NULL
(可为一维数组开辟动态存储空间,n为数组元素的个数,每个元素长度为size.
3、free函数
原型:void free(void *p);
其作用是释放由P指向的内存区,使这部分内存区能被其它变量使用。P是最近一次调用的calloc或malloc函数时返回的值。free无返回值。
*/
#define NULL 0
#define LEN sizeof(struct student)//宏定义
/*定义结构体类型*/
struct student
{
long num;
float score;
struct student *next;
};
int n;//n为全局变量,本模块中各函数均可使用它
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(LEN);//开辟一个新单元,返回的指针强制转化成结构体struct student型,并使p1,p2指向这个单元
scanf("%ld,%f",p1->num,p1->score);
head=NULL;
/*开辟出了一个空间,但是并没有连到链中去,头指针head并没有指向它*/
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);
}
//以上写的创建结点的函数,今天就写到这吧,今天太累了,明天接着写!
1、malloc函数
原型为: void *malloc(unsigned int size);
其作用是在动态存储区中分配一个长度为size的连续空间。
此函数返回值是一个指向分配域起始地址的指针(基类型为void).如果此函数未能分配成功地执行(例如内存空间不足)则返回空指针(NULL).
void型是指(void指针型类型,可定义一个指针变量,但不指定它是指向哪一种类型数据。void类型的指针指向一个抽象的类型的数据,
如果要使void型指针赋新值,得进行强制类型转换。例(struct student *p)将void类型的指针P强制转换成struct student类型
2、calloc函数
原型:void *calloc(unsigned n,unsigned size);
其作用是在内存的动态区存储中分配n个长度为size的连续空间,函数返回一个指向分配起始域地址的指针;如果分配不成功,返回NULL
(可为一维数组开辟动态存储空间,n为数组元素的个数,每个元素长度为size.
3、free函数
原型:void free(void *p);
其作用是释放由P指向的内存区,使这部分内存区能被其它变量使用。P是最近一次调用的calloc或malloc函数时返回的值。free无返回值。
*/
#define NULL 0
#define LEN sizeof(struct student)//宏定义
/*定义结构体类型*/
struct student
{
long num;
float score;
struct student *next;
};
int n;//n为全局变量,本模块中各函数均可使用它
struct student *creat(void)
{
struct student *head;
struct student *p1,*p2;
n=0;
p1=p2=(struct student *)malloc(LEN);//开辟一个新单元,返回的指针强制转化成结构体struct student型,并使p1,p2指向这个单元
scanf("%ld,%f",p1->num,p1->score);
head=NULL;
/*开辟出了一个空间,但是并没有连到链中去,头指针head并没有指向它*/
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);
}
//以上写的创建结点的函数,今天就写到这吧,今天太累了,明天接着写!
相关文章推荐
- 最详细的线性和表单链表删除创建新建的C语言实现
- 学习心得:链表的操作(C语言实现)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- C语言实现动态链表结构
- 学习心得:链表的操作(C语言实现)
- 学习心得:链表的操作(C语言实现)
- 学习笔记——线性表的动态分配顺序存储结构基本操作(C语言实现)
- 学习笔记——C语言实现单链表的基本操作:创建、输出、插入结点、删除结点、逆序链表
- 数据结构 学习笔记之:静态链表--史上最简单的C语言实现——只为掌握概念——不清楚静态链表的鸟鸟们有福了!
- C语言 双向循环链表的实现和结构 链表 线性表的链式实现
- C语言:创建动态单向链表,创建完成后,输出每一个节点的数据信息。
- c语言实现通用数据结构(一):通用链表
- c语言:单链表的实现(一) 创建,插入,删除,查找
- linux 下c语言创建单向动态链表的理解
- 线性链表--顺序链表实现(c语言)
- 数据结构 单链表插入删除操作(c语言实现)
- 数据结构 学习笔记(二):线性结构:线性表(顺序表,链表,广义表,多重链表)
- 数据结构中线性表的c语言代码实现
- 数据结构算法代码实现——线性表的链式表示与实现(单链表)(三 )
- (C语言)栈的线性结构实现(数据结构八)