数据结构--顺序表c语言实现
2014-11-03 23:42
309 查看
SqList.h如下:
<pre name="code" class="cpp">#ifndef __SQLIST_H #define __SQLIST_H typedef struct Sqlist { int *data; int usedsize; int size; }Sqlist; void InitList(Sqlist *list);//初始化顺序表 void Destory(Sqlist *list);//摧毁顺序表 bool ListEmpty(Sqlist *list);//判断顺序表是否为空 int ListLength(Sqlist *list);//取得顺序表长度 bool GetElem(Sqlist *list,int i,int *e);//取得顺序表中第i个元素的值放到e bool PriElem(Sqlist *list,int cur,int *e);//返回cur的前驱 bool NextElem(Sqlist *list,int cur,int *e);//返回cur的后继 bool Insert_Head(Sqlist *list,int var);//头插元素 bool Insert_Tail(Sqlist *list,int var);//尾插元素 bool Insert_Sq(Sqlist *list,int pos,int var);//在顺序表第pos个元素前插入var int Search(Sqlist *list,int var,int pos);//判断顺序表中pos后是否含有值为var的元素 bool Delete(Sqlist *list,int pos);//删除第pos个元素 void Show(Sqlist *list);//打印 void Traverselist(Sqlist *list);//就地逆置 #endif
SqList.c如下:
<pre name="code" class="cpp">#include"SqList.h"#include<stdio.h>#include<stdlib.h>#include<assert.h>#define MAXSIZE 20#define INCSIZE 10void InitList(Sqlist *list)//初始化顺序表{list->data=(int *)malloc(sizeof(int)*MAXSIZE);assert(list->data);list->size=MAXSIZE;list->usedsize=0;}void Destory(Sqlist *list)//摧毁顺序表{free(list->data);list->size=0;list->usedsize=0;}bool ListEmpty(Sqlist *list)//判断顺序表是否为空{if(list->usedsize==0)return true;return false;}int ListLength(Sqlist *list)//取得顺序表长度{return list->usedsize;}bool GetElem(Sqlist *list,int i,int *e)//取得顺序表中第i个元素的值放到e{if(i<0 || i>list->usedsize)return false;*e=list->data[i];return true;}bool PriElem(Sqlist *list,int cur,int *e)//返回cur的前驱{int pos=Search(list,cur,0);if(pos<=0)return false;*e=list->data[pos-1];return true;}bool NextElem(Sqlist *list,int cur,int *e)//返回cur的后继{int pos=Search(list,cur,0);if(pos<0 || pos==list->usedsize-1)return false;*e=list->data[pos+1];return true;}bool Insert_Head(Sqlist *list,int var)//头插元素{if(list->usedsize==list->size){list->data=(int *)realloc(list->data,sizeof(int)*(list->size+INCSIZE));assert(list->data);list->size+=INCSIZE;}for(int i=list->usedsize;i>0;i--){list->data[i]=list->data[i-1];}list->data[0]=var;list->usedsize++;return true;}bool Insert_Tail(Sqlist *list,int var)//尾插元素{if(list->usedsize==list->size){list->data=(int *)realloc(list->data,sizeof(int)*(list->size+INCSIZE));assert(list->data);list->size+=INCSIZE;}list->data[list->usedsize]=var;list->usedsize++;return true;}bool Insert_Sq(Sqlist *list,int pos,int var)//在顺序表第pos个元素前插入var{if(pos<1 ||pos>list->usedsize+1)return false;for(int i=list->usedsize-1;i>=pos-1;i--){list->data[i+1]=list->data[i];}list->data[pos-1]=var;list->usedsize++;return true;}int Search(Sqlist *list,int var,int pos)//判断顺序表中pos后是否含有值为var的元素{if(pos<0 ||pos>list->usedsize+1)return -1;for(int i=pos;i<list->usedsize;i++){if(list->data[i]==var)return i;}return -1;}bool Delete(Sqlist *list,int pos)//删除第pos个元素{if(pos<1 ||pos>list->usedsize)return false;for(int i=pos;i<list->usedsize;i++){list->data[i-1]=list->data[i];}list->usedsize--;return true;}void Show(Sqlist *list)//打印{for(int i=0;i<list->usedsize;i++){printf("%d ",list->data[i]);}printf("\n");}
相关文章推荐
- c语言实现数据结构中的顺序表
- 数据结构-C语言 顺序表实现归并 C=A∪B II
- 【数据结构】C语言实现顺序表(静态顺序表)
- 数据结构-C语言 顺序表实现并集运算 A=A∪B
- c语言实现数据结构顺序表源代码
- 数据结构-C语言 顺序表实现归并 C=A∪B
- 数据结构-队列-顺序表实现-C语言
- 【数据结构】C语言实现顺序表
- 【数据结构】C语言实现顺序表(动态顺序表)
- 数据结构C语言实现稀疏矩阵的压缩和运算的三元组顺序表表示法
- 数据结构的Java实现——顺序表
- 数据结构,C语言实现四则运算
- 数据结构学习系列四-顺序栈(c语言实现)
- 数据结构学习系列一--链表的建立(c语言实现)
- 数据结构C语言实现系列——线性表
- 数据结构C语言实现—队列操作
- 数据结构C语言实现系列——线性表
- 《数据结构》中的哈希表实现的例子(C语言)
- 数据结构的静态查找(C语言实现)
- 数据结构C语言实现系列——队列