順序表建立和就地逆置(函式)
阿新 • • 發佈:2018-12-10
本題要求實現順序表的建立和就地逆置操作函式。L是一個順序表,函式ListCreate_Sq(SqList &L)用於建立一個順序表,函式ListReverse_Sq(SqList &L)是在不引入輔助陣列的前提下將順序表中的元素進行逆置,如原順序表元素依次為1,2,3,4,則逆置後為4,3,2,1。
函式介面定義:
Status ListCreate_Sq(SqList &L);
void ListReverse_Sq(SqList &L);
裁判測試程式樣例:
//庫函式標頭檔案包含 #include<stdio.h> #include<malloc.h> #include<stdlib.h> //函式狀態碼定義 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; //順序表的儲存結構定義 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int ElemType; //假設線性表中的元素均為整型 typedef struct{ ElemType* elem; //儲存空間基地址 int length; //表中元素的個數 int listsize; //表容量大小 }SqList; //順序表型別定義 Status ListCreate_Sq(SqList &L); void ListReverse_Sq(SqList &L); int main() { SqList L; ElemType *p; if(ListCreate_Sq(L)!= OK) { printf("ListCreate_Sq: 建立失敗!!!\n"); return -1; } ListReverse_Sq(L); if(L.length){ for(p=L.elem;p<L.elem+L.length-1;++p){ printf("%d ",*p); } printf("%d",*p); } return 0; } /* 請在這裡填寫答案 */
輸入格式: 第一行輸入一個整數n,表示順序表中元素個數,接下來n個整數為表元素,中間用空格隔開。 輸出格式: 輸出逆置後順序表的各個元素,兩個元素之間用空格隔開,最後一個元素後面沒有空格。
輸入樣例:
4
1 2 3 4
輸出樣例:
4 3 2 1
Status ListCreate_Sq(SqList &L) { int n; scanf("%d",&n); if(n<0) return FALSE; L.elem =new ElemType[n+1]; if(!L.elem) return ERROR; L.length =n; for(int i=0;i<n;i++) scanf("%d",&L.elem[i]); return OK; } void ListReverse_Sq(SqList &L) { for(int i=0;i<L.length/2;i++) { int t=L.elem[i]; L.elem[i]=L.elem[L.length-i-1]; L.elem[L.length-i-1]=t; } return ; }