Linux自学day15-数据结构-单向链表

目标:实现单向链表类型定义、创建、头插法、遍历

1.编写linklist.h 头文件

#ifndef __LINKLIST_H__
#define __LINKLIST_H__

//存放数据的类型 
typedef int datatype;

//链表节点的类型 
typedef struct list_node 
{
    datatype data;						//数据
    struct list_node *pnext;			//下一个节点的地址
}list_node_t;

extern list_node_t *create_linklist(void);
extern int insert_head_linklist(list_node_t *phead, datatype tmpdata);
extern int show_linklist(list_node_t *phead);
extern int delete_linklist(list_node_t *phead, datatype tmpdata);

#endif

 1.1头文件保护宏

#ifndef __LINKLIST_H__
#define __LINKLIST_H__

 这是头文件保护宏,防止头文件被重复包含。__LINKLIST_H__ 是一个自定义的宏名,在第一次包含该头文件时,__LINKLIST_H__ 未被定义,会继续编译头文件内容,同时定义该宏。当再次包含该头文件时,由于 __LINKLIST_H__ 已被定义,#ifndef 条件不成立,头文件内容将被跳过。

1.2 存放数据的类型

 
typedef int datatype;

 使用 typedef 关键字将 int 类型重命名为 datatype,这样做的好处是当需要修改链表中存储的数据类型时,只需要修改这一处定义即可。

1.3 链表节点的类型


typedef struct list_node 
{
    datatype data;						//数据
    struct list_node *pnext;			//下一个节点的地址
}list_node_t;

 定义了链表节点的结构体类型 list_node,并使用 typedef 将其重命名为 list_node_t。结构体包含两个成员:data 用于存储数据,类型为 datatype(即 int);pnext 是一个指向 list_node 结构体的指针,用于指向下一个节点。

1.4函数声明 

extern list_node_t *create_linklist(void);
extern int insert_head_linklist(list_node_t *phead, datatype tmpdata);
extern int show_linklist(list_node_t *phead);
extern int delete_linklist(list_node_t *phead, datatype tmpdata);

 使用 extern 关键字声明了四个函数,表明这些函数在其他文件中定义。这些函数分别用于创建链表、在链

你可能感兴趣的:(数据结构,链表)