The DS sequence table reverts input data and ds sequence data.
There are two very similar processes to achieve the inverse of input data and the ordering of order tables. Therefore, the basic operations of order tables are the same: preparations before the basic operations of 0, 1 initialization of order tables, 6. insert data elements into the sequence table.
To reverse the input data element, you also need a reverse function, which has already been used in C ++ and C # languages, so it is no stranger, I remember that I wrote a lot of questions about C ++ program code, but I can't write them for dozens of times. It's easy to master, that is, half of the number of input data, so the code of the reverse function is:
<Span style = "font-size: 18px;"> // The void nizhi (SqList & L) {for (int I = 0; I <L. length/2; I ++) {int temp; temp = L. elem [I]; L. elem [I] = L. elem [L. length-1-i]; L. elem [L. length-1-i] = temp ;}</span>
In the main function, you only need to declare a sequence table, enter the number and data of the data elements in the sequence table, and call the inverse function. The complete sequence table provides the following code to reverse the input data:
<Span style = "font-size: 18px;" >#include <iostream> using namespace std; # include <malloc. h> # include <stdlib. h> # define LIST_INIT_SIZE 100 # define LISTINCREMENT 10 # define OK 1 # define TRUE 1 # define FALSE 0 # define ERROR 0 # define OVERFLOW-2 typedef int ElemType; typedef int Status; typedef struct {ElemType * elem; int length; int listsize;} SqList; // defines a struct type, and name it Sqlist // 1. initialize the sequence table Status InitList (SqList & L) {L. el Em = (ElemType *) malloc (LIST_INIT_SIZE * sizeof (ElemType); if (! L. elem) {exit (OVERFLOW);} L. length = 0; // The length is 0L. listsize = LIST_INIT_SIZE; return OK;} // 6 insert the data element Status ListInsert (SqList & L, int I, ElemType e) to the sequence table) {if (I <1 | I> L. length + 1) {return ERROR;} if (L. length> = L. listsize) {ElemType * newbase = (ElemType *) realloc (L. elem, (L. listsize + LISTINCREMENT) * sizeof (ElemType); if (! Newbase) {exit (OVERFLOW);} L. elem = newbase; L. listsize + = LISTINCREMENT;} ElemType * q = & (L. elem [I-1]); ElemType * p; for (p = & (L. elem [L. length-1]); p> = q; -- p) {* (p + 1) = * p;} * q = e; ++ L. length; return OK;} // void nizhi (SqList & L) {for (int I = 0; I <L. length/2; I ++) {int temp; temp = L. elem [I]; L. elem [I] = L. elem [L. length-1-i]; L. elem [L. length-1-i] = temp;} int main () {SqList La; InitList (La); ElemType e; int na; cout <"Enter the number of data in La :"; cin> na; for (int I = 1; I <= na; I ++) {cin> e; ListInsert (La, I, e );} nizhi (La); // call the reverse function for (I = 0; I <La. length; I ++) {cout <La. elem [I] <"," ;}cout <endl; return 0 ;}</span>
Input data: the number of sequential tables is 10.
Input data element: 0 1 2 3 4 5 6 7 8 9
The output result is: