微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单向链表应用函数

单向链表应用函数

时间:12-01 来源:互联网 点击:
注意:创建节点,一定要销毁节点。

#include

#include

typedef struct node{

intdata;

structnode *next;

} node_t;

// 创建节点函数

void *create(int size);

// 初始化链表

int init(node_t *head);

// 头插入法

int insert_head(node_t *head,node_t *pn);

// 尾插入法

int insert_end(node_t *head,node_t *pn);

// 打印所有节点内容

void print(node_t *head);

// 销毁所有节点

void destroy(node_t *head);

// 应用函数

// 创建长度为 len 的链表并输入内容

int create_link(node_t *head,int len);

int main()

{

node_t*head = NULL;

intlen = 0;

if(init(head= create(sizeof(node_t))) != 0){

printf("初始化链表失败");

exit(0);

}

printf("长度:");

scanf("%d",&len);

create_link(head,len);

print(head);

destroy(head);

free(head);

head= NULL;

return0;

}

// 创建节点函数

// 成功返回新节点首地址,失败返回 NULL

void *create(int size)

{

returncalloc(1,size);

}

// 初始化链表

// 0-成功 1-失败

int init(node_t *head)

{

if(NULL== head)

return1;

head->next= NULL;

return0;

}

// 头插入法

// 0-成功 1-失败

int insert_head(node_t *head,node_t *pn)

{

if(NULL== pn)

return1;

pn->next= head->next;

head->next= pn;

return0;

}

// 尾插入法

// 0-成功 1-失败

int insert_end(node_t *head,node_t *pn)

{

node_t*tail = NULL;

if(NULL== pn)

return1;

tail= head;

while(tail->next!= NULL)

tail= tail->next;

tail->next= pn;

pn->next= NULL;

return0;

}

// 打印所有节点内容

void print(node_t *head)

{

node_t*cur = NULL;

cur= head->next;

while(cur!= NULL){

printf("%d",cur->data);

cur= cur->next;

}

printf("");

}

// 销毁所有节点

void destroy(node_t *head)

{

node_t*del =NULL,*n_node = NULL;

del = head->next;

while(del != NULL){

n_node= del->next;

free(del);

del = n_node;

}

init(head);

}

// 应用函数

// 创建长度为 len 的链表并输入内容

// 返回创建的节点数

int create_link(node_t *head,int len)

{

inti = 0;

node_t*n_node = NULL;

printf("输入 %d 个数:",len);

for(i= 0;i < len;i++){

n_node= create(sizeof(node_t));//创建新节点

if(NULL== n_node)

returni;

scanf("%d",&n_node->data); // 输入数据

insert_end(head,n_node); // 插入链表

}

returni;

}

上一篇:Keil c 优化选项
下一篇:地线连接处理

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top