最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

C语言|链表初探

XAMPP相关 admin 30浏览 0评论

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。(来源于百度百科)

malloc函数原型

void *malloc(unsigned int size);

这个函数用于申请内存,返回的是个void类型指针,所以在使用时应注意强制类型转换成需要的指针类型

free函数原型

void free(void *p);

这个函数是用来释放指针p作指向的内存区。

链表申请内存的原因

函数的局部变量是在栈里面生成的,出了函数作用域自动销毁,不能作为链表节点就是因为这个,当函数作用域结束后占用的内存将被标记为可用,就是说这块内存将会被系统重新使用。

创建节点

struct Node
{
  int data;          //数据域
  struct Node* next; //指针域(指向下一节点的指针)
};

 

附上小程序

#include "stdio.h"    
#include "stdlib.h"    //提供malloc()和free()
#include "string.h"    //提供strcpy()等

//创建节点(结构体)
struct Node
{
  int data;          //数据域
  struct Node* next; //指针域(指向下一节点的指针)
};

void main(void)
{
  //创建节点
  struct Node* temp_1=(struct Node*)malloc(sizeof(struct Node));  //此处注意强制类型转换
  struct Node* temp_2=(struct Node*)malloc(sizeof(struct Node));  //此处注意强制类型转换
  struct Node* temp_3=(struct Node*)malloc(sizeof(struct Node));  //此处注意强制类型转换
  
  //节点数据进行赋值
  temp_1->data=10;
  //节点指针指向下一节点 
  temp_1->next=temp_2; 
  
  temp_2->data=20;
  temp_2->next=temp_3;
  
  temp_3->data=30;
  temp_3->next=NULL;  //注意此处 
  
  printf("temp_1的数据为:%d\n",temp_1->data);
  
  printf("temp_2的数据为:%d\n",temp_1->next->data);
  printf("temp_2的数据为:%d\n",temp_2->data);
  
  printf("temp_3的数据为:%d\n",temp_1->next->next->data);
  printf("temp_3的数据为:%d\n",temp_3->data);
  
  //删除 temp_2 节点 
  temp_1->data=10;
  temp_1->next=temp_3; 
  
  temp_3->data=30;
  temp_3->next=NULL;  //注意此处 
  
  printf("temp_1的数据为:%d\n",temp_1->data);
  
  printf("temp_3的数据为:%d\n",temp_1->next->data);
  printf("temp_3的数据为:%d\n",temp_3->data);
  
  //释放 temp_2
  free(temp_2); 
}

看懂上方小程序,链表的基本概念应该理解的差不多,后续再补充相关操作的讲解文章!

–END–

转载请注明:XAMPP中文组官网 » C语言|链表初探