/*处理动态链表所需要的函数
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语言实现广义表的头尾链表存储表示
在循环链表中,尾节点的指针域指向头节点,这种特性使得循环链表可以很方便地实现环形结构。 循环链表相比于普通链表,有以下特点: 1. 循环链表没有NULL指针,可以避免了一些特殊情况的处理。 2. 循环链表可以在...
栈的实现(C语言)数组实现以及链表实现源码,以及各个功能测试代码函数等 和后缀式转前缀式的用例
纯C语言实现仿C++STL泛型链表,实现了C++STL链表的基本功能,但代码并未做完善的测试,性能也不能保障,主要用于初学者学习
C语言实现多种链表快速排序
数据结构C语言版课程设计,包含链表,栈,树,图等数据结构的操作.zip数据结构C语言版课程设计,包含链表,栈,树,图等数据结构的操作.zip数据结构C语言版课程设计,包含链表,栈,树,图等数据结构的操作.zip数据...
数据结构实现C++线性链表,实现增删改查基本方法
VC6.0下 用C语言实现单向链表的创建、插入,删除节点,和2个链表合并等操作
C语言——链表技术实现的学生信息管理。直接把txt文档中的代码复制到vc++ 6.0中即可。
用c语言实现单向链表的数据结构,可以在编译器里直接使用的
C语言动态链表简单操作,创建链表,改动数据,插入删除数据。
数据结构,c语言实现的单向链表。代码分享 struct LinkNode { int data; struct LinkNode *next; }; typedef struct LinkNode *Lnode;
C语言实现的双向动态链表: 该资源包含.c和.h文件,可直接使用或者编译为库函数进行使用。实现了动态双向链表的各种基本功能,e.g. 增删节点,访问某一节点等。
基于C语言的数据结构-双链表doubleLinkedList