资源简介
c语言实现的模板,实现方法是使用void指针和size
包括list queue stack三种
代码片段和文件信息
/**
* function: 实现链表
* author: Xiaomu<070105083@163.com>
* time: 2012-5-19-night
*
*/
#include “List.h“
#include
#include
#include
/**
* 初始化链表
* @head 链表指针
* @userDataSize 用户数据大小
* @return LIST_OK for ok LIST_ERROR for error
*/
int initList(List *headint userDataSize)
{
if(head==NULL || userDataSize<=0)
return(LIST_ERROR);
head->userDataSize=userDataSize;
head->next=NULL;
return LIST_OK;
}
/**
* 在位置pos处插入元素
* @head 链表指针
* @e 指向新元素指针,该方法会创建新对象保存此指针指向的用户数据
* @pos 元素插入位置(0<=pos<=List.length)
* @return LIST_OK for ok LIST_ERROR for error
*/
int insertList(List *headconst void *eint pos)
{
if(head==NULL || e==NULL)
return(LIST_ERROR);
if(pos<0 || (pos>1 && head->next==NULL))
return(LIST_ERROR);
if(pos==0)
{
//在链表头部插入
//申请内存空间拷贝用户数据,以及新的链表对象
struct __ListElement *newElement=(struct __ListElement*)malloc(sizeof(struct __ListElement));
if(newElement==NULL)
return(LIST_ERROR);
newElement->data=malloc(head->userDataSize);
if(newElement->data==NULL)
{
free(newElement);
return(LIST_ERROR);
}
if(NULL==memcpy(newElement->dataehead->userDataSize))
{
free(newElement->data);
free(newElement);
return(LIST_ERROR);
}
newElement->next=head->next;
head->next=newElement;
}
else
{
struct __ListElement *pre=head->next *cur=head->next->next;
int i=1;
while(i {
pre=cur;
cur=cur->next;
++i;
}
if(i return(LIST_ERROR);
//其他位置插入
//申请内存空间拷贝用户数据,以及新的链表对象
struct __ListElement *newElement=(struct __ListElement*)malloc(sizeof(struct __ListElement));
if(newElement==NULL)
return(LIST_ERROR);
newElement->data=malloc(head->userDataSize);
if(newElement->data==NULL)
{
free(newElement);
return(LIST_ERROR);
}
if(NULL==memcpy(newElement->dataehead->userDataSize))
{
free(newElement->data);
free(newElement);
return(LIST_ERROR);
}
newElement->next=cur;
pre->next=newElement;
}
return(LIST_OK);
}
/**
* 在链表结尾插入新元素
* @head 链表指针
* @e 指向新元素指针,该方法会创建新对象保存此指针指向的用户数据
* @return LIST_OK for ok LIST_ERROR for error
*/
int appendList(List *headconst void *e)
{
if(head==NULL || e==NULL)
return(LIST_ERROR);
//其他位置插入
//申请内存空间拷贝用户数据,以及新的链表对象
struct __ListElement *newElement=(struct __ListElement*)malloc(sizeof(struct __ListElement));
if(newElement==NULL)
return(LIST_ERROR);
newElement->data=malloc(head->userDataSize);
if(newElement->data==NULL)
{
- 上一篇:定义和使用分数类fraction
- 下一篇:简单的汽车租赁管理软件C++控制台程序
相关资源
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
- 算符优先语法分析器(C语言编写)
- 基于C语言的密码锁程序
评论
共有 条评论