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


      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("
    ");
    109     PrintfSqList(L);
    110     
    111 }
  • 相关阅读:
    让程序的性能提升10倍
    以正确的姿势实现一棵JavaScript菜单树
    利用php数组函数进行函数式编程
    yum安装下的nginx,如何添加模块,和添加第三方模块
    前端面试题 vue
    前端常用面试题目及答案-HTML&CSS篇
    使用after伪类,配合IE的zoom或者overflow清除浮动
    函数式编程
    在CentOS 7上安装Node.js
    node中__dirname、__filename、process.cwd()、process.chdir()表示的路径
  • 原文地址:https://www.cnblogs.com/duolaAbao/p/9419264.html
Copyright © 2020-2023  润新知