<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                基本思想:數組是最常用的數據結構,在內存中連續存儲,可以靜態初始化(int a[2]={1,2}),可以動態初始化 malloc()。 難點就是數組在刪除或者插入元素的時候,要移動元素的坐標不好確定。規律: 1.如果要在數組中第pos個位置插入一個元素(應該從后面開始移動) for( i=cnu;i>=pos;i--) pBase[i]=pBase[i-1]; 2.刪除數組第pos位置的元素 for(i=pos+1;i<=cnu;i--) pBase[i-2]=pBase[i-1]; 使用malloc動態分配內存并將返回值賦給整形指針 int *pBase=(int *)malloc(sizeof(int)*len);//分配4*len字節長度的內存 這是pBase可以指向數組中的第一個元素,可以作為數組變量名稱使用。 數組的優缺點: 優點: 存取速度快 o(1) 可以直接根據下標找到內存位置 缺點: 事先必須知道數組的長度 插入刪除元素很慢 空間通常是有限制的 需要大塊連續的內存塊 插入刪除元素的效率很低 ~~~ #include<stdio.h> #include<malloc.h> #include<stdbool.h> struct Arr{ int len;//數組能存取的最大元素個數 int cnu;//數組中當前元素個數 int * pBase;//存儲指向數組的指針 }; /** *初始化數組 */ void init_array(struct Arr * pArray,int len){ pArray->pBase=(int *)malloc(sizeof(int)*len);//分配4*len字節長度的內存 if(NULL== pArray->pBase)//判斷內存是否分配失敗 { printf("動態分配內存失敗\n"); // exit(-1); }else{ pArray->len=len; pArray->cnu=0; } return ; } /** *判斷數組是否為空,傳地址省內存4字節,傳結構體變量需要進行拷貝,12字節 */ bool isempty(struct Arr * pArray){ if(0==pArray->cnu) { return true; }else{ return false; } } /** **判斷數組是否滿了 */ bool isfull(struct Arr * pArray) { if(pArray->len==pArray->cnu) { return true; }else { return false; } } /** *顯示數組內容 */ void show_array(struct Arr * pArray){ if(isempty(pArray)) printf("數組為空!\n"); else{ int i; for( i=0; i<pArray->cnu;i++) { printf("%d \n",pArray->pBase[i]); } printf("------------------------------------\n"); } } /** **向數組追加元素 */ bool append(struct Arr * pArray,int val){ if(isfull(pArray)) { printf("數組已經滿了!\n"); return false; }else{ pArray->pBase[pArray->cnu]=val; pArray->cnu++; } } /** **向數組中插入元素,pos為數組中第幾個位置,pos=3就是向a[2]插入元素 */ bool insert(struct Arr * pArray,int pos,int val) { if(pos<1||pos>pArray->len+1)//插入的位置不能小于1,同時不能比最后一個元素大二 { printf("插入的位置輸入的不合法\n"); return false; } if(isfull(pArray)) { printf("數組已經滿了,插入失敗!\n"); return false; } int i; //循環將pos位置開始的數組后移 for(i=pArray->cnu;i>=pos;i--) //移動范圍是從第pos個到底cnu個 { pArray->pBase[i]=pArray->pBase[i-1]; /** 若以i表示要移動元素的位置,從一開始的。右邊都是i-1,若左移,左邊是i-2,右移,左邊是i */ } pArray->pBase[pos-1]=val; pArray->cnu++; pArray->len++; return true; } /** **刪除數組中的第pos個元素,同時返回刪除的元素的值 */ bool delete(struct Arr * pArray,int pos,int * val) { if(pos<1||pos>pArray->cnu) { printf("刪除失敗,位置不合法\n"); return false; } int i; *val=pArray->pBase[pos-1]; for(i=pos+1;i<=pArray->cnu;i++) { //移動單位是從第pos+1個到cnu pArray->pBase[i-2]=pArray->pBase[i-1]; } pArray->cnu--; return true; } /** **數組倒置 */ bool inverse(struct Arr * pArray) { if(isempty(pArray)) { printf("倒置失敗,因數組為空"); return false; } int i=0; int j=pArray->cnu-1; int temp; while(i<j) { temp=pArray->pBase[i]; pArray->pBase[i]= pArray->pBase[j]; pArray->pBase[j]=temp; i++; j--; } return true; } int main() { struct Arr arr; init_array(&arr,6);//將結構體的地址作為實參,這樣才能修改結構體中的值,如果傳的是結構體變量,那么將進行拷貝,不會改變值 append(&arr,1); append(&arr,2); append(&arr,3); append(&arr,4); show_array(&arr); insert(&arr,2,88); show_array(&arr); int val; delete(&arr,1,&val); show_array(&arr); printf("刪除了 %d\n",val); inverse(&arr); show_array(&arr); return 0; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看