当前位置:文档之家› 【推荐下载】c语言之————有头循环双链表实现栈存储

【推荐下载】c语言之————有头循环双链表实现栈存储

【推荐下载】c语言之————有头循环双链表实现栈存储

c 语言之————有头循环双链表实现栈存储

#define list_for_each_safe(info, cur, tmp) \ for (cur = (info)- head.next, tmp = (cur)- next; \ (cur) != (info)- head; \ cur = tmp, tmp = (tmp)- next) dlist.c

/* *dlist.c#include “dlist.h”static void list_add(struct list_info *info,size_t

data_size,const void *data_entry) struct node_info *new_node = (struct node_info *)malloc(sizeof(struct node_info) + data_size); memcpy(new_node- par,data_entry,data_size); new_node- prev = info- head; new_node- next = info- head.next; info- head.next = new_node; new_node- next- prev = new_node;//info- head.next- prev = new_node;static void list_add_tail(struct list_info *info,size_t data_size,const void

*data_entry) struct node_info *new_node = (struct node_info *)malloc(sizeof(struct node_info) + data_size); memcpy(new_node- par,data_entry,data_size); new_node- prev =

info- head.prev; new_node- next = info- head; info- head.prev- next = new_node; info- head.prev = new_node; //new_node- prev- next = new_node;static void list_get(struct list_info *info,size_t data_size,void *data_entry) memcpy(data_entry, info- head.next- par, data_size);static void list_get_tail(struct list_info *info,size_t data_size,void *data_entry) memcpy(data_entry, info- head.prev- par, data_size);static void list_del(struct list_info *info,struct node_info *node) node- prev- next = node- next; node- next- prev = node- prev; node- next = node; node- prev = node; free(node);static int list_isempty(struct list_info *info)// return info- head.prev == info- head; return info- head.next == info- head;void list_init(struct list_info *info) info- head.prev = info- head; info- head.next = info- head; info- add = list_add; info- add_tail = list_add_tail; info- get = list_get; info- get_tail = list_get_tail; info- del = list_del; info- isempty = list_isempty;void

list_destroy(struct list_info *info) struct node_info *cur = NULL; struct node_info *tmp = NULL; list_for_each_safe(info, cur, tmp) info- del(info, cur); 2、栈的实现stack.h

相关主题
文本预览
相关文档 最新文档