您的位置:首页 > 其它

C:链表的操作,如何创建一个链表并打印

2012-02-18 14:11 190 查看
链表是一种常见的重要的数据结构,它是动态的进行内存存储分配的一种结构。

用数组存放数据时,必须事先定义固定的长度(即元素个数),但是事先难以确定有多少个元素时,则必须把数组定义的足够大,以保证成功。

无疑,这会造成内存浪费,然而,链表则没有这种缺点,它可以根据需要,动态开辟内存单元。

链表中的各个元素在内存中是可以不是连续存放的,但是要找到某一元素,必须知道它的地址,这就需要链表必须有一个头指针(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();

}

这样便可创建链表,如图:



到此,便可创建一个链表了。

------------------------------------------------------------------

打印链表函数

------------------------------------------------------------------

前几天写了一个文章,叫怎么创建一个链表,如今说,链表的另一个操作,怎么打印出内容来。

废话不说,直接跟上以前的代码,写出打印函数来。

void print(struct student *head)

{

struct student *p;

printf(“\n these %d records are:\n”,n);

p = head;

if(head != NULL)

do

{

printf(“%ld %f\n”,p->num,p->score);

p = p->next;

}while(p != NULL);

}

很简单,效果跟上一篇一样,那个也是通过这个函数打印出来的,

作者 李木空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐