(一)链表初探

it2026-06-04  5

//链表初步 //时间: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; }

 

最新回复(0)