数据结构顺序表的实现
来源:互联网 发布:什么推广软件效果好 编辑:程序博客网 时间:2024/06/04 18:42
一直想花时间好好学下数据结构但由于种种原因终未成行,这几天趁闲终于开始学,为了能快速的掌握数据结构,我在学得时候是看完书马上用代码来实现书上的算法,所以觉得做笔记还是很有必要的,虽然我很少有做笔记的习惯,但这次例外了。只求能最快的时间写出像样的代码,为了能最快的获得提高,希望大家能指出我的错误,为此我把我做的第一个函数贴出来,希望大家指正。
/* * 文件名:SqList.h * 功能 : 顺序表C语言库 * 版本 :V1.0 * 作者 : * 日期 :2013年7月28 * Email :zhaogoodwell@gmail.com */#ifndef _SqList_H_#define _SqList_H_#include "stdio.h"#include "stdlib.h"#include "malloc.h"//顺序表达小初始定义#define List_Init_Size 100#define ListIncreMent 10#define Ture 1#define False 0#define OK 1#define Error 0#define Infeasible -1#define OverFlow -2////数据类型定义typedef int ElemType;typedef struct{ ElemType *elem; int length; int listsize;}SqList;/* 函数名 :InitList() * 输入参数 :无 * 输出参数 :得到的空表; * */SqList* InitList(); //初始化表;/* 函数名 :DestroyList(SqList *L) * 输入参数 :SqList 型指针; * 输出参数 :SqLisr 表 * */void DestroyList(SqList *L);/* 函数名 :ClearList(*L) * 输入参数 :SqList 型指针; * 输出参数 :无,清空表; * */void ClearList(SqList *L);/* 函数名 :IsListEmpty(*L) * 输入参数 :SqList 型指针; * 输出参数 :表空返回 Ture ,非空返回 Flase; * */int IsListEmpty(SqList *L);/* 函数名 :ListLength(*L) * 输入参数 :SqList 型指针; * 输出参数 :返回当前表长; * */int ListLength(SqList *L);/* 函数名 :GetElem(*L,i) * 输入参数 :SqList 型指针,元素号i * 输出参数 :返回表L,第i个元素。 */ElemType GetElem(SqList *L,int i);/* 函数名 :LocationElem(*L,e) * 输入参数 :SqList 型指针,元素e * 输出参数 :返回表L中e的位置; */ int LocationElem(SqList *L ,ElemType e);/* 函数名 :ListInsert(*L,e); * 输入参数 :SqList 型指针,元素e * 输出参数 :无,把e插入表Lzhong */void ListInsert(SqList *L,ElemType e);/* 函数名 :ListDelete(*L,e); * 输入参数 :SqList 型指针,元素e * 输出参数 :无,删除表中元素e; */void ListDelete(SqList *L,ElemType e);/* 函数名 :ShowListInformation(*l); * 输入参数 :SqList 型指针 * 输出参数 :打印链表信息; */void ShowListInformation(SqList *L);#endif // _SqList_H_
/* * 文件名:SqList.c * 功能 : 顺序表C语言库 * 版本 :V1.0 * 作者 * 日期 :2013年7月28 * Email :zhaogoodwell@gmail.com */#include "stdio.h"#include "stdlib.h"#include "SqList.h"SqList* InitList() //线性表初始化{SqList *L; L->elem=(ElemType *)malloc(List_Init_Size*sizeof(ElemType)); if(!L->elem) { printf(" Init:Error No Menory For Program \n"); exit(1); } L->length=0; L->listsize=List_Init_Size; return L;};void DestroyList(SqList *L) //销毁表操作{ if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } else { (L->elem)=NULL; }}void ClearList(SqList *L) //清空链表{ if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } else L->length=0;};int IsListEmpty(SqList *L) //链表判空{ if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } else if(L->length==0) return(Ture); else return(False);}int ListLength(SqList *L) //链表长度{ if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } else return(L->length);}ElemType GetElem(SqList *L,int i) //获取表中第i号元素{ if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } return ((L->elem)[i]);}int LocationElem(SqList *L ,ElemType e) //获取元素e列表中的位置{ int i=0; if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } while(i<=(L->length)) { if((L->elem)[i]==e) return(i); i++; } if(i==(L->length)) { printf("The %ElemType Is Not exit In the List",e); exit(1); }}void ListInsert(SqList *L,ElemType e) //插入数据{ ElemType *newbase=NULL; if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } if((L->length)>=(L->listsize)) { newbase=(ElemType *)realloc(L->elem,((L->listsize)+ListIncreMent)*sizeof(ElemType)); L->elem=newbase; if(newbase==NULL) { printf("No More Memory For Your List!\n"); exit(1); } } ++(L->length); (L->elem)[(L->length)-1]=e;}void ListDelete(SqList *L,ElemType e){ int i,location; if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } location=LocationElem(L,e); for(i=location;i<L->length;i++) { (L->elem)[i]=(L->elem)[i+1]; } (L->length)--;}void ShowListInformation(SqList *L){ int i; if(L->elem==NULL) { printf("List Not exit!\n"); exit(1); } printf("链表信息 :\n"); printf("表长度 :%d \n",L->length); printf("\n"); printf("表 :\n"); printf("表最大长度:%d\n",L->listsize); for(i=0;i<(L->length);i++) { printf("%8d",(L->elem)[i]); } printf("\n");}
- 数据结构顺序表的实现
- 数据结构顺序表的实现
- 数据结构----顺序表的实现
- 【数据结构】顺序表的实现
- 数据结构顺序表实现
- 数据结构的实现——顺序表
- 数据结构(C++)顺序表的实现
- 数据结构的C实现_顺序表
- 数据结构-----顺序表与单链表的实现
- 数据结构线性表顺序结构的实现
- 1-java数据结构顺序表的实现
- 数据结构---线性表的顺序实现
- [c语言]数据结构 顺序表的实现
- 实现数据结构顺序表的基本操作
- 数据结构之栈的顺序表实现
- 数据结构之顺序表的实现
- 数据结构顺序表的代码实现
- 数据结构—顺序表的实现
- linux应用编程:thread总结
- C语言文件读写
- 用RSA加密实现Web登录密码加密传输
- UVA 305 Joseph (约瑟夫环 打表)
- MySQL第(一)篇《MySql的安装》
- 数据结构顺序表的实现
- 项目管理
- 15个CSS3和jQuery的超棒页面过渡效果教程
- jquery基本介绍
- Xmanager 远程连接Linux桌面
- Web_CSS_如何替代页面样式表?
- Android mainfest文件 android属性 汇总
- 2.2
- 安卓之service学习总结