国产探花免费观看_亚洲丰满少妇自慰呻吟_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)。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灯塔市| 石棉县| 洛川县| 云南省| 峨山| 清徐县| 涿鹿县| 盈江县| 辽阳县| 南汇区| 全州县| 安新县| 漳州市| 宝应县| 济源市| 贵阳市| 潜江市| 双桥区| 剑阁县| 新兴县| 如东县| 乌兰浩特市| 怀来县| 盐亭县| 乌拉特前旗| 丁青县| 庐江县| 麻栗坡县| 阿巴嘎旗| 吉隆县| 满洲里市| 田东县| 汉阴县| 定兴县| 武清区| 贺兰县| 凤阳县| 浦县| 奇台县| 玉环县| 惠州市|