资源简介
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++控制台程序
相关资源
- 基于51单片机的c语言程序 电机转速测
- BCH编译码c语言实现
- SM2算法C语言实现
- 用C语言实现成绩表的快速排序程序设
- GPS网间接平差C语言程序
- RSA算法纯C语言代码实现,带测试dem
- c语言标准库源码大全
- [算法:C语言实现(第1-4部分)基础知
- MPI与OpenMP并行程序设计:C语言版
- C语言程序设计课件全套
- 几本英文原版的c语言经典图书
- 单片机交通灯课程设计.zip
- 课程设计--C语言学生成绩管理系统内
- 利用C语言实现的ATM机
- C语言程序设计第四版谭浩强课后习题
- 现代优化设计黄金分割法和二次插值
- 数据结构c语言版第2版课后习题答案
- 谭浩强C语言教程
- 求曼德勃罗集合C语言串行并行代码
- 流程图生成器C语言
- C语言大一期末考小助手
- 谭浩强 程序代码及习题答案(第三版
- 超声波测距及蓝牙模块源码程序c语言
- 重庆邮电大学C语言期末考试题
- 学校教材订购系统,C语言版,内容详
- 利用FFT计算频谱图
- 数据结构——C语言描述》习题及答案
- 郝斌C语言详细笔记().doc
- C语言编写的中文分词程序
- 全国计算机等级考试-二级教程-C语言
评论
共有 条评论