顺序表相关操作 (三)

2014-11-24 03:04:33 · 作者: · 浏览: 5
f (from < 0 || from > sqList.iLength - 1)
{
return -1;
}

for (i = from; i < sqList.iLength; i++)
{
if (sqList.data[i] == elem)
{
return i;
}
}

return -1;
}

/************************************************************************
函数名: Unique
作 者: 谭友亮(Charles Tan)
日 期: 2013-4-12
作 用: 将顺序表中的重复元素删除
形参数:
返回值:
************************************************************************/
void CSequenceList::Unique()
{
int i, index;

for(i = 0; i < sqList.iLength - 1; i++)
{
index = i + 1;
while ((index = Find(index, sqList.data[i])) >= 0)
{
Delete(index);
}
}
}

/************************************************************************
函数名: MergeList
作 者: 谭友亮(Charles Tan)
日 期: 2013-4-12
作 用: 将两个有序表合并
形参数:
返回值:
************************************************************************/
CSequenceList CSequenceList::MergeList(CSequenceList& listA)
{
int i, j, k;
CSequenceList listSeq;
listSeq.InitList();

i = j = k = 0;
while(i < sqList.iLength && j < listA.sqList.iLength)
{
if (sqList.data[i] < listA.sqList.data[j])
{
listSeq.Insert(listSeq.sqList.iLength, sqList.data[i++]);
}
else
{
listSeq.Insert(listSeq.sqList.iLength, listA.sqList.data[j++]);
}
}

while(i < sqList.iLength)
{
listSeq.Insert(listSeq.sqList.iLength, sqList.data[i++]);
}

while(j < listA.sqList.iLength)
{
listSeq.Insert(listSeq.sqList.iLength, listA.sqList.data[j++]);
}

return listSeq;
}

/************************************************************************
函数名: Reverse
作 者: 谭友亮(Charles Tan)
日 期: 2013-4-12
作 用: 逆转顺序表
形参数:
返回值:
************************************************************************/
void CSequenceList::Reverse()
{
int i;
DataType temp;

for(i = 0; i < sqList.iLength / 2 + sqList.iLength % 2; i++)
{
temp = sqList.data[i];
sqList.data[i] = sqList.data[sqList.iLength - i - 1];
sqList.data[sqList.iLength - i - 1] = temp;
}
}