天天看點

線性表逆置

問題描述:将一個線性表逆置,即: 輸入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;

}

繼續閱讀