#include<iostream>
#include<stdlib.h>
typedef int ElemType;
struct List
{
ElemType *list;
int size;
int Maxsize;
};
void InitList(List &L)
{
L.Maxsize = 10;
L.list = new ElemType[L.Maxsize];
if (L.list == NULL)
{
std::cout << "動態可分配的存儲空間用完,退出運行" << std::endl;
exit(1);
}
L.size = 0;
}
void ClearList(List &L)
{
if (L.list != NULL)
{
delete []L.list;
L.list = NULL;
}
L.Maxsize = 0;
L.size = 0;
}
int LenthList(List &L)
{
return L.size;
}
bool EmptyList(List &L)
{
return L.size == 0;
}
ElemType GetList(List &L, int pos)
{
if (pos<1 || pos>L.size)
{
std::cerr << "pos is out range!" << std::endl;
exit(1);
}
return L.list[pos - 1];
}
void TraverseList(List &L)
{
for (int i = 0; i < L.size; i++)
std::cout << L.list[i] << ' ';
std::cout << std::endl;
}
bool FindList(List &L, ElemType& item)
{
for (int i = 0; i < L.size; i++)
if (L.list[i] == item)
{
item = L.list[i];
return true;
}
return false;
}
bool InsertList(List &L, ElemType item, int pos)
{
if (pos<-1 || pos>L.size)
{
std::cout << "pos值無效!" << std::endl;
return false;
}
int i;
if (pos == 0)
{
for (i = 0; i < L.size; i++)
if (item < L.list[i])
break;
pos = i + 1;
}
else if (pos == -1)
pos = L.size + 1;
if (L.size == L.Maxsize)
{
int k = sizeof(ElemType);
L.list = (ElemType*)realloc(L.list, 2 * L.Maxsize*k);
if (L.list == NULL)
{
std::cout << "動態可分配的儲存空間用完,退出運行!" << endl;
exit(1);
}
L.Maxsize = 2 * L.Maxsize;
}
for (i = L.size - 1; i >= pos - 1; i--)
L.list[i + 1] = L.list[i];
L.list[pos - 1] = item;
L.size++;
return true;
}
順序表子函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.