线性表(四)实现
来源:互联网 发布:java友盟推送demo 编辑:程序博客网 时间:2024/04/28 16:48
下面是自己写的一个线性表的实现
/*
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef int ElementType;
*
* 对于插入和删除的时间复杂度为O(n)
* 对于,读取时间复杂度为O(1)
* 最好的情况是0(1)
* 最坏的情况是O(n)
* 平均情况是0((n-1)/2)
* 简化后为O(n)
typedef struct
{
ElementType data[MAXSIZE];
int length;
}SqList;
*
* 初始化线性表
int initList(SqList *sqList)
{
//sqList=malloc(sizeof(sqList));
sqList->length=0;
}
*
* 判断线性表是否为空
int listIsEmpty(SqList *sqList){
return sqList->length==0?0:1;
}
*
* 清空线性表
int clearList(SqList *sqList){
sqList->length=0;
}
int operateIndexIsRight(SqList *sqList,int i)
{
if(listIsEmpty(sqList))
{
if(i>sqList->length)
{
return 0;
}
else if(i<=0)
{
return 0;
}
return 1;
}else{
return 0;
}
}
*
* 将线性表L中的第i个位置元素返回给e
int GetElement(SqList *sqList,int i,ElementType *element)
{
if(operateIndexIsRight(sqList,i))
{
*element=sqList->data[i-1];
return 1;
}else{
return 0;
}
}
*
* 在线性表L中查找与给定值e相等的数据,如果查找成功,返回该元素在表 中序号表示成功,否则,返回0表示失败
int searchElement(SqList *sqList,ElementType e)
{
int diedai;
if(listIsEmpty(sqList))
{
for(diedai=0;diedai<sqList->length;diedai++)
{
if(e==sqList->data[diedai])
{
return diedai+1;
}
}
return 0;
}else{
return 0;
}
}
*
*在线性表L中第i个位置插入新的元素e
int insertList(SqList *sqList,int i,ElementType e)
{
int diedai;
if(i>MAXSIZE)
{
return 0;
}
else if(i<=0)
{
return 0;
}else{
for(diedai=sqList->length-1;diedai>=i-1;diedai--)
{
sqList->data[diedai+1]=sqList->data[diedai];
}
sqList->data[i-1]=e;
sqList->length++;
return 1;
}
}
*
* 小甲鱼的插入
ListInsert(SqList *L,int i,ElementType e)
{
int k;
if(L->length==MAXSIZE)
{
return 0;
}
if(i<1||i>L->length+1)
{
}
if(i<=L->length)
{
for(k=L->length-1;k>=i-1;k--)
{
L->data[k+1]=L->data[k];
}
}
L->data[i-1]=e;
L->length++;
return 1;
}
*
*删除线性表L中第i个位置元素,并用e返回其值
int deleteList(SqList *sqList,int i,ElementType *e)
{
int diedai;
if(operateIndexIsRight(sqList,i))
{
*e=sqList->data[i-1];
for(diedai=i-1;diedai<sqList->length-1;diedai++)
{
sqList->data[diedai]=sqList->data[diedai+1];
}
sqList->length--;
return 0;
}else{
return 0;
}
}
*
* 返回线性表L的元素个数
int listLength(SqList *sqList)
{
return sqList->length;
}
*
* 遍历打印线性表中所有的元素
int printLinerTable(SqList *sqList)
{
int variable;
for(variable=0;variable<sqList->length;variable++)
{
printf("%d\n",sqList->data[variable]);
}
}
int main(){
int searchVariable;
ElementType variable;
//初始化线性表
SqList sqList;
initList(&sqList);
//插入数据
insertList(&sqList,1,1);
insertList(&sqList,2,2);
insertList(&sqList,3,3);
insertList(&sqList,4,4);
insertList(&sqList,5,5);
insertList(&sqList,3,18);
printLinerTable(&sqList);
//打印线性表的元素个数
printf("元素表中一共有:%d个元素\n",listLength(&sqList));
//查找
searchVariable=3;
printf("需要查找的元素:%d在第:%d个位置\n",searchVariable,searchElement(&sqList,searchVariable));
//获取指定元素
searchVariable=3;
GetElement(&sqList,searchVariable,&variable);
printf("第:%d个元素是:%d\n",searchVariable,variable);
//删除
searchVariable=3;
deleteList(&sqList,searchVariable,&variable);
printf("需要删除的元素:%d在第:%d个位置\n",variable,searchVariable);
printLinerTable(&sqList);
//打印线性表的元素个数
printf("元素表中一共有:%d个元素\n",listLength(&sqList));
//判断线性表是否为空
printf("%d\n",listIsEmpty(&sqList));
//清空线性表
clearList(&sqList);
//判断线性表是否为空
printf("%d\n",listIsEmpty(&sqList));
}
*/
- 线性表(四)实现
- 线性表基础知识(四)
- 线性表的实现(四)双向链表
- (四)线性表的顺序实现及相关操作
- 线性结构--->线性表实现
- 线性表-链表(四)
- 四、线性表(1)
- 数据结构编程笔记四:第二章 线性表 单链表的实现
- 线性表的实现
- 线性表的实现
- 线性表(C#实现)
- C++实现线性表
- 线性表的实现
- 线性表顺序实现
- 线性表的实现
- 线性表顺序实现
- 线性表实现
- 线性表顺序实现
- 菜鸟玩云计算之六:Ubuntu Server 12.10 上安装 nodejs, 消息队列zeromq
- 数字电路设计之五级流水线设计(CPU)
- j2ee集成支付宝及时到账
- Foundation框架第十六弹:Block的常用方法
- Unrecognized Windows Sockets error: 0: JVM_Bind
- 线性表(四)实现
- 知识产权保护
- php 获取文件mime类型的方法
- Foundation框架第十七弹:Protocol的常用方法
- 从零开始之快速搭建Android开发环境
- POJ - 2001 - Shortest Prefixes (字典树!!)
- 个人博客
- js刷新页面的方法总结
- Android开发之全局异常捕获完美闪退APP专题