C语言中链表的创建
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言数据类型的使用
struct student //这里struct是保留字,student是结构体名;它们合起来就是结构体类型名{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}; //{}之间是结构体成员表
struct student student1, student2; //用以上的结构体类型名定义两个变量
struct student stu[20]; //用以上的结构体类型名定义一个20个元素的数组
以上说明也可缩写成:
struct student
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1, student2, stu[20];
使用typedef定义类型
typedef struct
{ int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}STUDENT; //定义一个结构类型名
STUDENT student1, student2, stu[20]; //用结构类型名定义变量
结构变量的引用
student1.num=12;
=”马大哈”;
stu[10].score=88;
stu[1].sex=’M’;
student1.addr=”北京市丰台区富丰路7号”;
看typedef的使用
typedef int INTEGER;
typedef float REAL;
typedef int ARR[10];
新类型名的引用
INTEGER i, j;
REAL a, b;
ARR s, t; //这里s, t是有10个元素的数组
简单链表
#define NULL 0
struct student
{long num;
float score;
struct student *next;
};
main()
{struct student a,b,c, *head, *p;
a.num=99101; a.score=89.5;
b.num=99103; b.score=90;
c.num=99107; c.score=85;
head=&a;
a.next=&b;
b.next=&c;
c.next=NULL;
p=head;
do
{cout<
p=p->next;
} while (p!=NULL);
}
建立动态链表
两个重要函数
malloc——申请分配某个长度的内存区。格式:void *malloc(unsigned size) calloc——申请n个某长度的内存区。格式:void *calloc(unsigned n, unsigned size) free——释放某个内存区。格式:void free(void *p)
#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(p1->num, p1->score);
head=NULL;
while (p1->num!=0)
{n++;
if (n==1) head=p1;//插入链表上的第一个结点else p2->next=p1;//插入链表上的其他结点
p2=p1;
p1=(struct student *)malloc(LEN);
scanf(p1->num, p1->score);
}
p2->next=NULL;
return(head);
}