赞
踩
#include<stdlib.h>
#define MaxSize 10 //最大长度为10
#define InitSize 50
typedef int ElemType; //element type 元素类型
typedef struct { //顺序表的静态分配
ElemType data[MaxSize];
int Length = 0;
};
typedef struct { //顺序表的动态分配
ElemType* data; //数组的指针
int MaxSize1; //数组的最大容量
int length; //当前存放元素的个数
}SeqList;
用malloc函数在内存中开辟一整空间
void InitList(SeqList& L) //initial 初始的
{
L.data = (int*)malloc(InitSize*sizeof(int));
L.length = 0;
L.MaxSize1 = InitSize;
}
1.让*p和L.data指向同一位置(记住起始地址)
2.开辟一块新空间L.data
3.*p赋值给新开辟的L.data
4.free§释放原来旧的空间
void IncreaseSize(SeqList& L, int len) //increase 增长
{
int* p = L.data;
L.data = (int*)malloc(sizeof(int) * (len + L.MaxSize1));
for (int i = 0; i < L.length; i++)
{
L.data[i] = p[i];
}
free(p);
}
注意位序是从1开始的,数组下标是从0开始的
void ListInsert(SeqList& L, int i, ElemType e) //insert 插入
{
for (int j = L.length; j >=i; j--)
{
L.data[j] = L.data[j - 1];
}
L.data[i] = e;
L.length++;
}
bool ListDelete(SeqList &L,int i,ElemType e)
{
if (i<1 || i>L.length)
return false;
e = L.data[i - 1];
for (int j = i; j < L.length; j++)
{
L.data[j-1] = L.data[j];
}
L.length--;
return true;
}
ElemType GetElem(SeqList& L, int i)
{
return L.data[i + 1];
}
int LocateElem(SeqList& L, ElemType e) //Locate 准确找出
{
for (int i = 0; i < L.length; i++)
{
if (e == L.data[i])
return i + 1; //需要注意位序是从1开始的
}
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。