//链表初步
//时间:10月22日
//参考书籍《C Primer Plus》第五版
#include <stdio.h>
#include <stdlib.h> //包含malloc函数的头文件
#define LEN 5
struct link{
int mark;
struct link *next;
};
int main() {
struct link *head=NULL,*current; //头指针和当前指针
int i;
//边创建边输入数据(本次暂不提供交互)
for ( i = 0; i < LEN+1 ; i++) { //注意此处需+1,因为第一次给head分配空间需要消耗掉一次
if ( head == NULL ){ //如果首地址为空说明还未开始分配空间
head = (struct link*)malloc(sizeof(struct link));
current = head;
}else{
current->mark = 90+i; //定义目前结构体的数据
current->next = (struct link*)malloc(sizeof(struct link)); //定义目前结构体里面指针指向下一个结构体
current = current->next; //等于指向下个结构体的指针
}
}
current->next=NULL; //让结尾的指针指向空
//输出内容
current = head;
for (i = 0; current->next != NULL ; ++i) {
if ( head == NULL ){
printf("The contend is empty!\n");
}else{
printf("No.%d is:%d\n",i+1,current->mark);
current = current->next; //等于指向下个结构体的指针
}
}
//释放空间(借一个临时的指针进行内存释放)
struct link *temp;
current = head; //当前位置在开头
while ( current != NULL ){
temp = current->next; //临时存储下一个结构体的地址
free(current); //释放当前结构体所占空间
current = temp; //当前位置等于本来下一个结构体的位置
}
return 0;
}