线性表逆置

问题描述:将一个线性表逆置,即:
输入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]交换,与法二大同小异
 /* for(int i=0;i<L.length/2;i++){
   int t;
   t=L.elem[i];
   L.elem[i]=L.elem[L.length-1-i];
   L.elem[L.length-1-i]=t;  
     }*/
//法二,记录数组的下标法:记录数组的下标,一个向后走,一个向前走,直至相等,否则就交换
     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;
}

猜你喜欢

转载自blog.csdn.net/cyx_chen/article/details/79746337
今日推荐