线性表的顺序存储实现c语言
来源:互联网 发布:淘宝长图 编辑:程序博客网 时间:2024/06/07 09:52
线性表的顺序存储指的是
用一组地址连续的存储单元
依次存储线性表的基本元素。
#include<stdio.h>
#include<malloc.h>#define ListSize 10
typedef struct SqList{
int *elem; //线性表存储空间基址
int length;
int listsize;
}SqList;
bool InitList(SqList &L)
{
L.elem=(int *)malloc(ListSize*sizeof(int));
/* L.elem=new int[ListSize]; */ //都是以数组形式存储元素
if(!L.elem) return false;
else{
L.length=0;
L.listsize=ListSize;
return true;
}
}
int GetLength(SqList L) //得到表长
{
return L.length;
}
void GetElem(SqList L,int i,int &elem) //得到第i个元素
{
elem=L.elem[i-1];
}
int LocateElem(SqList L,int elem) //判断是否有elem的值相同元素并返回元素序号
{
for(int i=0;i<L.length;i++)
{
if(L.elem[i-1]==elem)
{
return i;
break;
}
}
return 0;
}
bool InsertList1(SqList &L,int i,int elem) //插入第i个元素前即L.elem[i-1]前
{
if(i<1||i>L.length+1) return false; //当i=length+1时即原有最后的元素后一个
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ListSize)*sizeof(int));//表满满时length=listsize
if(!newbase) return false;
L.elem=newbase;
}
for(int j=L.length;j>i;j--) L.elem[j]=L.elem[j-1]; //移动i个元素
L.elem[i-1]=elem;
L.length++;
return true;
}
bool InsertList2(SqList &L,int i,int elem) //插入第i个元素后即L.elem[i-1]后
{
if(i<1||i>L.length) return false; //当i=length+1时即原有最后的元素后一个
if(L.length>=L.listsize)
{
int *newbase;
newbase=(int *)realloc(L.elem,(L.listsize+ListSize)*sizeof(int));//表满满时length=listsize
if(!newbase) return false;
L.elem=newbase;
}
for(int j=L.length;j>=i;j--) L.elem[j]=L.elem[j-1]; //移动i-1个元素
L.elem[i]=elem;
L.length++;
return true;
}
bool DeleteList(SqList &L,int i,int &elem) //删除第i个元素并将值赋予elem
{
if(i<1||i>L.length) return false;
elem=L.elem[i-1];
for(int j=i;j<L.length;j++) L.elem[j-1]=L.elem[j];
L.length--;
return true;
}
void ListTraverse(SqList L) //表的遍历
{
for(int i=0;i<L.length;i++)
{
printf("%i ",L.elem[i]);
}
printf("\n");
}
int main()
{
int temp=0;
SqList A;
InitList(A);
InsertList1(A,1,3);
InsertList1(A,2,6);
InsertList2(A,2,2);
InsertList2(A,3,3);
printf("表A长度:");
printf("%i\n",GetLength(A));
printf("表A:");
ListTraverse(A);
printf("删除元素为:");
DeleteList(A,1,temp);
printf("%i\n",temp);
printf("表A:");
ListTraverse(A);
return 0;
}
阅读全文
0 0
- 线性表的顺序存储结构的c语言实现
- C语言--线性表的顺序存储的实现
- 顺序存储结构线性表的C语言实现
- 用C语言实现线性表的顺序存储结构
- 线性表顺序存储结构的c语言实现
- C语言实现一般线性表的顺序存储
- 线性表的顺序存储结构(C语言实现)
- 线性表的顺序静态存储--C语言实现
- 线性表的顺序存储实现c语言
- 线性表的顺序实现(C语言)
- 线性表的顺序实现(c语言)
- C语言实现线性表之顺序存储结构操作
- 线性表顺序存储-使用c语言实现
- 线性表(顺序存储)C语言实现
- 线性表-顺序存储结构(C语言实现)
- c语言的线性表的顺序存储的实现,数组
- 线性表的顺序存储结构的常见操作(C语言代码实现)
- 线性表的顺序存储结构(c语言源码实现)
- Eclipse4.5.0安装Spring插件springsource-tool-suite
- eclipse没有自动编译出.class文件
- 网络编程系列文章(一)之Socket实现异步TCP服务器
- Ajax请求中的async:false/true的作用
- 序列化代理模式
- 线性表的顺序存储实现c语言
- constraint的一些用法总结
- 第五届图灵杯1861
- 3、条件加载Bean——@Conditional
- 剑指_18.删除链表中的重复数字
- 记一次小米2S的刷机过程
- 获取之前发布的webService服务
- cjqyzUsers
- Hello_World 我的学习路线