【数据结构】 线性表 的 顺序存储结构

  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 }

 

posted @ 2018-08-05 15:02  LiZR07  阅读(251)  评论(0编辑  收藏  举报