用C语言实现一个容器,可以装字符串、字符、数字、二进制数据, 其中每一个被装进的数据要附带一个唯一识别码( uid )。
int put_char(List *list, unsigned int uid, char c);
int put_string(List *list, unsigned int uid, char *str);
int put_integer(List *list, unsigned int uid, int num);
int put_binary(List *list, unsigned int uid, unsigned char* data, unsigned int data_len);
unsigned int getNodeNum(List *list);
int delete_node(List *list, unsigned int uid);
int print_node(List *list, unsigned int uid);
void delete_all_nodes(List *list);
我的解决方案:使用单链表,结构体里定义各数据类型,用一个标志位来标记数据类型,可以实现每个节点都能具有任意数据类型。
/**
******************************************************************************
* @file list.h
* @author summer
* @version V1.0
* @date 2015-05-25
* @brief C语言实现一个泛型容器
* 函数声明,功能注释在.c文件中。
******************************************************************************
* @attention
* IDE: Visual Studio 2010
*
******************************************************************************
*/
#ifndef _LIST_H
#define _LIST_H
#define IS_INT 1
#define IS_CHAR 2
#define IS_STR 3
#define IS_BIN 4
#define FALSE 0
#define TRUE 1
typedef struct LIST
{
struct LIST *link;
unsigned int uid;
int int_value;
char char_value;
unsigned int mark; // mark来标记类型 IS_INT 1, IS_CHAR 2, IS_STR 3, IS_BIN 4
char str[100];
}List;
List *create();
int search_node