国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

c語言實現線性表之順序存儲結構

2019-11-08 19:59:38
字體:
來源:轉載
供稿:網友

1.什么是順序存儲結構

線性表的存儲結構有順序存儲結構和鏈式存儲結構兩種。而我們把線性表的順序存儲結構稱為順序表。順序表就是把線性表中的所有元素按照其邏輯順序,依次存儲到從指定的存儲位置開始的一塊連續的存儲空間。

2.順序存儲結構的特點

(1)隨機訪問性

(2)占用連續的存儲空間

(3)存儲分配只能預先進行,即靜態分配

3.順序存儲結構的實現

#define maxsize 100typedef struct Sqlist{	int data[maxsize];//存放順序表元素的數組	int length;//存放順序表的長度}Sqlist;

4.順序表實現增刪查

#include<stdio.h>#define maxsize 100typedef struct Sqlist{    int data[maxsize];    int length;}Sqlist;//查找x的位置int findElem(Sqlist l,int x){    int i;    for(i=0;i<l.length;i++){        if(x==l.data[i]){            return i;        }    }    return 0;}//在p位置上插入xint insertElem(Sqlist *l,int p,int x){    int i;    if(p<1 || p>l->length || l->length==maxsize-1){        return 0;    }    for(i=l->length;i>=p;i--){        l->data[i+1]=l->data[i];    }    l->data[p]=x;    ++(l->length);    return 1;}//刪除p位置上的元素,將刪除的值傳遞給eint deleteElem(Sqlist *l,int p,int *e){    int i;    if(p<1 || p>l->length || l->length==maxsize-1){        return 0;    }    *e=l->data[p];    for(i=p;i<l->length;i++){        l->data[i]=l->data[i+1];    }    --(l->length);    return 1;}void main(){    int i,j=0;    Sqlist l={{0,1,2,3,4,5,6},7};    //int position =findElem(l,3);    //PRintf("查詢3的位置為:%d/n",position);    //int result=insertElem(&l,3,9);    deleteElem(&l,4,&j);    for(i=0;i<l.length;i++){        printf("%d/n",l.data[i]);    }    printf("刪除元素為:%d/n",j);}結果:

查找:

插入:

刪除:

5.計算題

題目:具有n個元素的順序表,插入一個元素所進行的平均移動個數為多少?

解:

(1)求任一位置插入元素的概率

首先我們知道插入的位置是隨機的,所以每個位置插入元素的可能性都是一樣的。有n個插入位置,所以任一位置插入元素的概率為

p=1/n。

(2)求對應的每個插入位置需要移動的元素的個數

如果我們把新元素插入在表的第i個位置后,那么就需要將第i位置之后的元素向后移動一個位置。所以移動的元素個數為n-i。

所以

       n

E=p∑(n-i)=(n-1)/2

       1

所以插入的時間復雜度為O(n)。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松桃| 阳泉市| 凤冈县| 图片| 宿州市| 辽源市| 广昌县| 西峡县| 简阳市| 白河县| 新邵县| 灯塔市| 贵阳市| 桂平市| 霍城县| 房产| 榆林市| 蕉岭县| 沙洋县| 清徐县| 丰原市| 铜梁县| 云南省| 云霄县| 香格里拉县| 濮阳县| 报价| 循化| 开鲁县| 天峨县| 喀什市| 运城市| 竹北市| 叙永县| 佛山市| 乡宁县| 闽侯县| 蒙山县| 左云县| 汪清县| 伊春市|