乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      線性表順序存儲案例--動態(tài)數(shù)組

       白云cjl 2018-05-24
      seqlist.h
      ---------------------------------------------------------------------------------
      #ifndef  __MY_SEQLIST_H__
      #define __MY_SEQLIST_H__

      //順序存儲鏈表
      //動態(tài)數(shù)組案例:

      typedef struct MyArray{
          int* ArrayAddr; //數(shù)據(jù)首地址
          int capacity; //數(shù)據(jù)容量
          int length; //數(shù)據(jù)長度
      }MyArray;



      //初始化數(shù)組
      MyArray* Init_MyArray();

      //判斷數(shù)組是否為空 0:false 不為空  1:true 為空
      int IsEmpty_MyArray(MyArray* array);

      //清空數(shù)組
      int Clear_MyArray(MyArray* array);

      //獲得指定位置元素
      int GetElement_MyArray(MyArray* array,int pos);

      //向指定位置插入元素
      int InsertElement_MyArray(MyArray* array, int pos,int val);

      //刪除指定位置元素
      int RemoevElement_MyArray(MyArray* array, int pos);

      //獲得鏈表長度
      int GetLength_MyArray(MyArray* array);

      //獲得鏈表容量
      int GetCapacity_MyArray(MyArray* array);

      //銷毀數(shù)組
      int DestroyArray_MyArray(MyArray* array);

      //打印數(shù)組內(nèi)容
      void PrintArray_MyArray(MyArray* array);


      #endif  //__MY_SEQLIST_H__
      ===========================================================================

      seqlist.c
      ---------------------------------------------------------------------------
      #define _CRT_SECURE_NO_WARNINGS
      #include<stdio.h>
      #include<stdlib.h>
      #include<string.h>

      #define MYARRAY_TRUE 1
      #define MYARRAY_FALSE 0

      //定義結構體 保存數(shù)據(jù)首地址和數(shù)組長度
      typedef struct MyArray{
          int* ArrayAddr; //數(shù)據(jù)首地址
          int capacity; //數(shù)據(jù)容量
          int length; //數(shù)據(jù)長度
      }MyArray;


      //初始化數(shù)組
      MyArray* Init_MyArray()
      {
          MyArray* array = (MyArray*)malloc(sizeof(MyArray));
          array->ArrayAddr = (int *)malloc(sizeof(int) * 20);
          if(array->ArrayAddr == NULL)
          {
              printf("apply mem failed!");
              return NULL;
          }

          memset(array->ArrayAddr, 0, sizeof(int)*20);
          array->length = 0;
          array->capacity = 20;

          return array;
      }

      //判斷數(shù)組是否為空 0:false 不為空  1:true 為空
      int IsEmpty_MyArray(MyArray* array)
      {
          if(array == NULL)
          {
              return -1;
          }

          if(array->length == 0)
          {
              return 1;
          }

          return 0;
      }

      //清空數(shù)組
      int Clear_MyArray(MyArray* array)
      {
          if(array == NULL)
          {
              return -1;
          }

          if(array->ArrayAddr != NULL)
          {
              memset(array->ArrayAddr, 0, array->capacity*(sizeof(int)));
          }

          array->length = 0;

          return 0;

      }


      //獲得指定位置元素
      int GetElement_MyArray(MyArray* array,int pos)
      {
          if(array == NULL)
          {
              return -1;
          }

          if(pos > array->length -1)
          {
              printf("pos is out of the length of array");
              return -3;
          }

          return array->ArrayAddr[pos];

      }

      //向指定位置插入元素
      int InsertElement_MyArray(MyArray* array, int pos,int val)
      {
          int i;
          if(array == NULL)
          {
              return -1;
          }

          if(pos > array->capacity)
          {
              printf("pos is out of array capacity:err: %d", pos);
              return -2;
          }

          if(pos > array->length )
          {
              pos = array->length ;
          }

          if(array->length == array->capacity)
          {
              int *newSpace = (int*)malloc(2*array->capacity * sizeof(int));
              memset(newSpace, 0, 2*array->capacity * sizeof(int));
              memcpy(newSpace, array->ArrayAddr, array->length * sizeof(int));

              if(NULL != array->ArrayAddr)
              {
                  free(array->ArrayAddr);
              }

              array->ArrayAddr = newSpace;
              array->capacity = array->capacity*2;

          }


          for(i = array->length-1; i >= pos; i--)
          {
              array->ArrayAddr[i+1] = array->ArrayAddr[i];
          }

          array->ArrayAddr[pos] = val;
          array->length++;

          return 0;
      }


      //刪除指定位置元素
      int RemoevElement_MyArray(MyArray* array, int pos)
      {
          int i;
          if(array == NULL)
          {
              return -1;
          }

          if(pos > array->length)
          {
              printf("pos is out of array length, err: %d", pos);
              return -2;
          }

          for(i=pos; i<array->length-1; i++)
          {
              array->ArrayAddr[i] = array->ArrayAddr[i+1];
          }

          array->length--;

          return 0;
      }


      //獲得鏈表長度
      int GetLength_MyArray(MyArray* array)
      {
          if(array == NULL)
          {
              return -1;
          }
          return array->length;
      }


      //獲得鏈表容量
      int GetCapacity_MyArray(MyArray* array)
      {
          if(array == NULL)
          {
              return -1;
          }
          return array->capacity;
      }


      //銷毀數(shù)組
      int DestroyArray_MyArray(MyArray* array)
      {
          if(array == NULL)
          {
              return -1;
          }

          if(NULL != array->ArrayAddr)
          {
              free(array->ArrayAddr);
              array->ArrayAddr = NULL;
          }

          array->capacity = 0;
          array->length = 0;

          free(array);

          return 0;
      }


      //打印數(shù)組內(nèi)容
      void PrintArray_MyArray(MyArray* array){

          int i;
          for(i = 0; i < array->length;i++)
          {
              printf("%d ",array->ArrayAddr[i]);
          }
          printf("\n");
      }

      =============================================================================
      seqlist_test
      -----------------------------------------------------------------------------
      #include <stdio.h>
      #include <stdlib.h>
      #include <string.h>

      #include "seqlist.h"


      //測試API
      void test()
      {
          int i =0 ;
          MyArray *array = Init_MyArray();//初始化數(shù)組
          //打印數(shù)組的長度和容量
          printf("數(shù)組的初始化容量:%d,  數(shù)組的初始化長度:%d", GetLength_MyArray(array), GetCapacity_MyArray(array));


          //循環(huán)向數(shù)組中插入元素
          for(i=0; i<10; i++)
          {

              InsertElement_MyArray(array, i, i);

          }


          printf("數(shù)組插入元素長度:%d ,容量:%d\n", GetLength_MyArray(array), GetCapacity_MyArray(array));

          //打印數(shù)組
          PrintArray_MyArray(array);


          InsertElement_MyArray(array, 5, 100);


          printf("數(shù)組插入元素長度:%d ,容量:%d\n", GetLength_MyArray(array), GetCapacity_MyArray(array));

          //打印數(shù)組
          PrintArray_MyArray(array);


          //刪除位置 5 的元素
          RemoevElement_MyArray(array,5);

          //打印數(shù)組
          PrintArray_MyArray(array);

          printf("數(shù)組插入元素長度:%d ,容量:%d\n", GetLength_MyArray(array), GetCapacity_MyArray(array));

          //銷毀數(shù)組
          DestroyArray_MyArray(array);

      }


      int main(){

          //test01();
          test();

          return 0;
      }







        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多