問題描述:将一個線性表逆置,即: 輸入1 2 3 4 5 6; 輸出6 5 4 3 2 1;
#include <iostream>
#include <cstdlib>
using namespace std;
typedef int elemtype;
typedef struct{
elemtype* elem;
int listsize;
int length;
}sqlist;
void create_L(sqlist& L){
L.elem=(elemtype*)malloc(1000*sizeof(elemtype));
L.listsize=1000;
L.length=0;
}
void show(sqlist& L){
for(int i=0;i<L.length;i++){
cout<<L.elem[i]<<" ";
}
cout<<endl;
}
void nizhi(sqlist& L){ //法一,周遊半個數組,前後交換 :從前向後周遊L.elem[i]與L.elem[L.length-1-i]交換,與法二大同小異
//法二,記錄數組的下标法:記錄數組的下标,一個向後走,一個向前走,直至相等,否則就交換
int low=0;
int high=L.length-1;
while(low<high){
int t=L.elem[low];
L.elem[low]=L.elem[high];
L.elem[high]=t;
low++;
high--;
}
}
void fuzhi(sqlist& L,int n){
cout<<"請輸入線性表的元素";
int m;
for(int i=0;i<n;i++){
cin>>m;
L.elem[i]=m;
L.length++;
}
}
int main(){
sqlist l;
create_L(l);
fuzhi(l,5);
show(l);
nizhi(l);
show(l);
return 0;
}