博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单的链表
阅读量:4075 次
发布时间:2019-05-25

本文共 1859 字,大约阅读时间需要 6 分钟。

花了半个小时写了一个“教学版”的链表,所谓教学版就是说该代码比较简陋,只是为了说明一些链表的性质,不具有实用价值。

以下代码未经调试以及单元测试系统测试,如运行错误,纯属正常。微笑

头文件:

#ifndef _LINKLIST_H_#define _LINKLIST_H_typedef void* LIST;typedef void* DATA;typedef unsigned int uint;typedef void (*fnCallback)(DATA data);LIST create();bool append(LIST list, DATA data);uint length(LIST list);DATA del(LIST list, uint index);DATA modify(LIST list, uint index, DATA data);DATA get(LIST list, uint index);void release(LIST list, fnCallback func);#endif
源文件:
#include "malloc.h"#include "LinkList.h"typedef struct linkNode{	void * data;	linkNode *pNext;}linkNode;#define NULL 0LIST create(){	linkNode *node = (linkNode*)malloc(sizeof(linkNode));	node->data = NULL;	node->pNext = NULL;	return (LIST)node;}uint length(LIST list){	uint len = 0;	linkNode *node = NULL;	for(node=(linkNode*)list; node->pNext; len++, node=node->pNext);	return len;}bool append(LIST list, DATA data){	linkNode *node = NULL;	for(node = (linkNode*)list; node->pNext; node = node->pNext);	node->data = data;	node->pNext = NULL;	return true;}DATA del(LIST list, uint index){	linkNode *node = NULL;	linkNode *temp = NULL;	void * data = NULL;	if(index >= length(list))		return false;	for(node = (linkNode*)list ; index--; node = node->pNext);	temp = node->pNext;	data = temp->data;	node->pNext = temp->pNext;	free(temp);	return data;}DATA modify(LIST list, uint index, DATA data){	linkNode *node = NULL;	void *temp = NULL;	if(index >= length(list))		return false;	for(node = (linkNode*)list ; index--; node = node->pNext);	temp = node->pNext->data;	node->pNext->data = data;	return temp;}DATA get(LIST list, uint index){	return del(list, index);}void release(LIST list, fnCallback func){	linkNode *node = NULL;	linkNode *temp = NULL;	void * data = NULL;	for(node=(linkNode*)list; node; )	{		temp = node->pNext;		node = temp->pNext;		func(temp->data);		free(temp);	}	free(list);}

你可能感兴趣的文章
关于按钮的mouseOver和rollOver
查看>>
《多线程服务器的适用场合》例释与答疑
查看>>
Netty框架
查看>>
Socket经验记录
查看>>
对RTMP视频流进行BitmapData.draw()出错的解决办法
查看>>
多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
查看>>
FMS 客户端带宽计算、带宽限制
查看>>
在线视频聊天(客服)系统开发那点事儿
查看>>
语法解析器!
查看>>
SecurityError Error 2148 SWF 不能访问本地资源
查看>>
Flex4的可视化显示对象
查看>>
Flex:自定义滚动条样式/隐藏上下箭头
查看>>
烈焰SWF解密
查看>>
Qt 静态编译后的exe太大, 可以这样压缩.
查看>>
3D游戏常用技巧Normal Mapping (法线贴图)原理解析——基础篇
查看>>
C#的扩展方法解说
查看>>
.linearDrag on rigidbody / rigidbody2D in code?
查看>>
mute
查看>>
Google、微软软件测试之道
查看>>
Fiddler调试和Wireshark数据包分析
查看>>