自定义实现静态fifo及stack ,大家帮忙看看,给点改进意见
程序代码:
/****************************************************************** * Copyright (c) 2010, XX Technologies Co., Ltd. * All rights reserved. * * 文件名称:u_linearStruct.c * 文件标识:见配置管理计划书 * 摘 要:调试输出信息 * * 取代版本:1.0 * 原作者 :zhong yunde * 完成日期:2010年07月17日 *******************************************************************/ #include "u_def.h" #include <stdio.h> #include "u_linearStruct.h" static FIFO_List g_fifo_list; static STACK_List g_stack_list; FIFO_List *InitFIFOList(void) { UINT32 i; FIFO_List *list = NULL; list = &g_fifo_list; list->tailPtr = list->headPtr = 0; // 元素个数为0 for (i=0; i<MAX_NODE_NUM; i++) { list->node[i] = NULL; } return list; // 返回全局变量地址 } INT32 AddFIFOList(char *s) { if (((g_fifo_list.headPtr+1)%MAX_NODE_NUM) == g_fifo_list.tailPtr) { return -1; } g_fifo_list.node[g_fifo_list.headPtr] = s; // 说明g_fifo_list.headPtr g_fifo_list.headPtr++; g_fifo_list.headPtr %= MAX_NODE_NUM; return 0; } char* DeleteFIFOList(void) { char *s = NULL; if (g_fifo_list.headPtr == g_fifo_list.tailPtr) { return NULL; } s = g_fifo_list.node[g_fifo_list.tailPtr]; g_fifo_list.tailPtr++; g_fifo_list.tailPtr %= MAX_NODE_NUM; return s; } STACK_List *InitStackList(void) { UINT32 i; STACK_List *list = NULL; list = &g_stack_list; list->tailPtr = 0; // 元素个数为0 for (i=0; i<MAX_NODE_NUM; i++) { list->node[i] = NULL; } return list; // 返回全局变量地址 } INT32 AddStackList(char *s) { if ((g_stack_list.tailPtr+1) == MAX_NODE_NUM) { return -1; } g_stack_list.node[g_stack_list.tailPtr] = s; // 说明g_fifo_list.headPtr g_stack_list.tailPtr++; return 0; } char *DeleteStackList(void) { char *s = NULL; if (g_stack_list.tailPtr == 0) { return NULL; } g_stack_list.tailPtr--; s = g_stack_list.node[g_stack_list.tailPtr]; g_stack_list.node[g_stack_list.tailPtr] = NULL; return s; }补充头结构:
// 静态的FIFO链表结构
typedef struct FIFO_List
{
char *node[MAX_NODE_NUM];
UINT32 headPtr;
UINT32 tailPtr;
}FIFO_List;
// 静态链表的栈(FILO)结构实现
typedef struct STACK_List
{
char *node[MAX_NODE_NUM];
UINT32 tailPtr;
}STACK_List;