问题 问答题

试分别用顺序表和单链表作为存储结构,实现将线性表(a0,a1,a2,……,an-1)就地逆置的操作,所谓“就地”,是指辅助空间应为O(1)。

答案

参考答案:方法一:用顺序表作存储结构
struct SqList/
{
ElemType*elem;∥存储空间基址
int length;∥当前长度
};
void InvertSqList(SqList&L)
{
int i;ElemType temp;
for(i—0;i<L.length/2;i++)
{
temp=L.elem;
L.elem=L.elem[L.1ength—i—1];
L.elem[L.length—i—1]—temp;
}
}
方法二:用顺序表作存储结构
void InvertSqList(SqList&L)6 R
{
int i,j;ElemType temp;
i=0;j=L.length—1;
while(i<j)
{
temp=L.elem;
L.elem=L.elem[j]
L.elem[j]=temp
i++;j——;
}
}
方法三:用带头结点的单链表作存储结构
struct LNode
{
ElemType data;
LNode*next:
};
typedef LNode*LinkList;
Void InvertLinkList(LinkList&L)
{
p—L;L—NULL;
while(p){
s—p;p—p—>next;
S—>next—L:
}
}

选择题
单项选择题