看了很多应届生的面试题,大多数还都是基础性的题目,这里回顾总结一下数据结构的内容:
const int MAXSIZE = 20; //线性表存储元素个数
typedef int ElemType; //存储数据类型
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
void InitList(SqList *L) //初始化链表
{
L->length = 0;
}
bool ListEmpty(SqList L) //判断是否为空
{
if (L.length == 0)
{
return true;
}
return false;
}
void ClearList(SqList *L) //清空操作
{
L->length = 0;
}
bool GetElem(SqList L, int i, ElemType *e) //将L中的第i个位置元素返回给e。
{
if (L.length==0 || i<0 || i>L.length)
{
return false;
}
*e = L.data[i-1];
return true;
}
int LocateElem(SqList L, ElemType e) //查找给定e值相等的元素,如果成功返回该值在表中的序号,否则返回0
{
if (L.length == 0)
{
return 0;
}
for (int i=0; i<L.length; i++)
{
if (L.data[i] == e)
{
return i+1;
}
}
return 0;
}
bool ListInsert(SqList *L, int i, ElemType e) //在线性表L中第i位置处插入e
{
if (L->length+1 < i || i<1)
{
return false;
}
if (L->length == MAXSIZE)
{
return false;
}
if (i<=L->length)
{
for (int k=L->length; k>=i; k--)
L->data[k+1] = L->data[k];
}
L->data[i-1] = e;
L->length++;
return true;
}
bool ListDelete(SqList *L, int i, ElemType *e) //删除节点
{
if (L->length == 0)
return false;
if (i<1 || i>L->length)
return false;
*e = L->data[i-1];
if (i < L->length)
{
for (int k=i; k<L->length; k++)
{
L->data[k-1] = L->data[k];
}
}
L->length--;
return true;
}