C语言实现简单单链表
2011-06-19 02:17
477 查看
]#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct name_val name_val; struct name_val { char *name; int value; name_val *next; }; name_val *new_item(const char *name, int value) { name_val *nvp = malloc(sizeof(name_val)); if (!nvp) return NULL; nvp->name = name; nvp->value = value; nvp->next = NULL; return nvp; } name_val *add_front(name_val *list, name_val *item) { item->next = list; return item; } name_val *add_end(name_val *list, name_val *item) { name_val *p; if (!list) return item; for (p = list; p->next; p = p->next) ; p->next = item; return list; } /* sequential search for name in list */ name_val *lookup(name_val *list, const char *name) { for (; list; list = list->next) if (!strcmp(list->name, name)) return list; return NULL; } void print_list(name_val *list) { for (; list; list = list->next) printf("key: %s/t/tvalue: %d/n", list->name, list->value); } int list_length(name_val *list) { int n = 0; for (; list; list = list->next) ++n; return n; } void free_all(name_val *list) { name_val *next; for (; list; list = next) { next = list->next; /* assumes name is freed elsewhere */ free(list); } } name_val *delete_item(name_val *list, const char *name) { name_val *p, *prev = NULL; for (p = list; p; p = p->next) { if (!strcmp(list->name, name)) { if (!prev) list = p->next; else prev->next = p->next; /* assumes name is freed elsewhere */ free(p); return list; } prev = p; } return NULL; /* no match */ } int main() { name_val *list = NULL; list = add_end(list, new_item("I", 0)); list = add_end(list, new_item("love", 1)); list = add_end(list, new_item("you", 2)); print_list(list); }
其它函数未测试,哈哈
相关文章推荐
- c语言对简单单链表的实现
- c语言实现简单单链表
- C语言单链表简单实现
- 数据结构C语言之单链表简单实现
- C语言实现单链表的简单操作【完整版】
- 简单单链表的实现—C语言
- [数据结构]单链表C语言的简单实现
- C语言:单链表简单功能实现
- C语言实现单链表的简单操作
- 单链表的C语言简单实现
- 单链表的应用:用C语言实现简单的员工管理系统(新建、增、删、改、查、排序)
- 顺序表的链式结构中用C语言实现单链表的交并差运算
- C语言实现超简单登录认证
- 单链表实现多项式的相乘-c语言
- C语言简单实现进制互相转换
- 【数据结构】数据结构C语言的实现(简单二叉树)
- c语言简单实现队列
- C语言实现单链表
- C语言实现的一个简单的HTTP程序
- C语言使用结构体实现接口简单列子