1
实验一、顺序表逆置和单链表逆置
1.1
问题的提?/p>
设有一个线性表
E={e
1
, e
2
, ?nbsp;, e
n-1
, e
n
}
,设计一个算法,将线性表逆置,即
使元素排列次序颠倒过来,成为逆线性表
E?{ e
n
, e
n-1
, ?nbsp;, e
2
, e
1
}
,要求逆线?/p>
表占用原线性表空间?/p>
并且用顺序表和单链表两种方法表示?/p>
分别用两个程序来
完成?/p>
?/p>
顺序表逆置
1.1.1
算法分析
Step1
:将顺序表位?/p>
i
的元素与位置
L->last-i+1
的元素进行互换;
Step2
:重?/p>
Step1
,直?/p>
i=L->last/2
,结束?/p>
1.1.2
问题的程序代?/p>
//
顺序表逆置
void invert(sequenlist*L)
{
int i;
datatype temp; //
定义
i
?/p>
temp
的类?/p>
for(i=1;i<=L->last/2;i++)//for
循环语句,其中的
L->last/2
?/p>
L->last
为奇
数时,相当于向下取整
{temp=L->data[i];
L->data[i]=L->data[L->last-i+1];
L->data[L->last-i+1]=temp;//
将位?/p>
i
和位?/p>
L->last-i+1
的元素进行互?/p>
}
}
1.1.3
运行结果
1.1.4
存在的问?/p>
逆置表中的元素只能是单个元素,不能进行多位数的逆置,如下图所?/p>