【数据结构】 线性表 的 顺序存储结构
1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef int ElemType; 4 typedef struct SqList{ 5 ElemType *elem ; // 线性表顺序表示的基本类型 6 int length; // 当前的表长 7 int listsize; // 当前分配存储空间的容量 8 }SqList ; 9 10 //创建顺序表 11 SqList InitList() { 12 SqList L; 13 L.elem = (ElemType*)malloc(10*sizeof(ElemType)); 14 if(!L.elem) 15 exit(0); 16 L.length = 0; 17 L.listsize = 10; 18 return L; 19 } 20 21 //添加元素 22 int add(SqList &L) { 23 int i = 0; 24 for( ; ; ) 25 { 26 char n = 'N'; 27 if(L.length == L.listsize) 28 return L.listsize - L.length; 29 printf("请输入元素"); 30 scanf( "%d" , &(L.elem[i])); 31 i++; 32 L.length++; 33 printf("是否继续输入Y/N"); 34 fflush(stdin); 35 scanf("%c" , &n); 36 if(n != 'Y') 37 return L.listsize - L.length; 38 fflush(stdin); 39 } 40 41 } 42 43 //输出元素 44 void PrintfSqList(SqList &L) { // 45 for(int i = 0 ; i < L.length ; i ++ ) 46 printf("///%d/// " , L.elem[i]); 47 } 48 49 //删除指定元素 50 int deleteSqList(SqList &L, int n){ // 51 if( n > L.length) 52 return 0 ; 53 for(int i = n ; i < L.listsize ; i++) 54 L.elem[i-1] = L.elem[i]; 55 L.length--; 56 return 1 ; 57 } 58 59 //插入元素 60 int insertSqList(SqList &L , int n , int data) { 61 if( n > L.length || L.length == L.listsize) 62 return 0 ; 63 L.length++; 64 for( int i = L.length ; i >= n-1 ; i--) 65 L.elem[i] = L.elem[i-1]; 66 L.elem[n-1] = data; 67 } 68 69 //倒序 70 int Reverseorder(SqList &L) { 71 for(int i = 0 ; i <= ( L.length - 1 ) / 2 ; i ++) 72 { 73 int data = L.elem[i]; 74 L.elem[i] = L.elem[L.length - 1 - i]; 75 L.elem[L.length-1-i] = data; 76 } 77 } 78 79 //排序 由小到大 或 由大到小 80 int sortSqList(SqList &L , int z) { 81 for(int i = 0 ; i < L.length ; i ++) 82 for(int j = L.length-1 ; j > i ; j--) 83 if( L.elem[j] <= L.elem[j-1]) 84 { 85 int data = L.elem[j]; 86 L.elem[j] = L.elem[j-1]; 87 L.elem[j-1] = data; 88 } 89 if( z < 0) 90 Reverseorder(L); 91 return 0; 92 } 93 94 //删除所有元素 95 int deleteAll(SqList &L) 96 { 97 L.length = 0; 98 } 99 main() { 100 SqList L; 101 L = InitList(); 102 add(L); 103 PrintfSqList(L); 104 // deleteSqList(L,1); 105 // insertSqList(L , 2 , 9); 106 // Reverseorder(L); 107 sortSqList(L , -1); 108 printf("\n"); 109 PrintfSqList(L); 110 111 }