问答题 试分别用顺序表和单链表作为存储结构,实现将线性表(a 0 ,a 1 ,a 2 ,……,a n-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:
}
}