欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

什么是Python中的順序表

本篇文章為大家展示了什么是Python中的順序表,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

10年積累的網(wǎng)站設(shè)計制作、成都網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先做網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有宣恩免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1、順序表介紹

順序表是最簡單的一種線性結(jié)構(gòu),邏輯上相鄰的數(shù)據(jù)在計算機內(nèi)的存儲位置也是相鄰的,可以快速定位第幾個元素,中間不允許有空,所以插入、刪除時需要移動大量元素。順序表可以分配一段連續(xù)的存儲空間Maxsize,用elem記錄基地址,用length記錄實際的元素個數(shù),即順序表的長度, 

什么是Python中的順序表

上圖1表示的是順序表的基本形式,數(shù)據(jù)元素本身連續(xù)存儲,每個元素所占的存儲單元大小固定相同,元素的下標是其邏輯地址,而元素存儲的物理地址(實際內(nèi)存地址)可以通過存儲區(qū)的起始地址Loc (e0)加上邏輯地址(第i個元素)與存儲單元大?。╟)的乘積計算而得,即:Loc(element i) = Loc(e0) + c*i

所以,訪問指定元素時無需從頭遍歷,通過計算便可獲得對應(yīng)地址,其時間復(fù)雜度為O(1)。

如果元素的大小不統(tǒng)一,則須采用圖2的元素外置的形式,將實際數(shù)據(jù)元素另行存儲,而順序表中各單元位置保存對應(yīng)元素的地址信息(即鏈接)。由于每個鏈接所需的存儲量相同,通過上述公式,可以計算出元素鏈接的存儲位置,而后順著鏈接找到實際存儲的數(shù)據(jù)元素。注意,圖2中的c不再是數(shù)據(jù)元素的大小,而是存儲一個鏈接地址所需的存儲量,這個量通常很小。

圖2這樣的順序表也被稱為對實際數(shù)據(jù)的索引,這是最簡單的索引結(jié)構(gòu)。

2、順序表的結(jié)構(gòu)

什么是Python中的順序表   

一個順序表的完整信息包括兩部分,一部分是表中的元素集合,另一部分是為實現(xiàn)正確操作而需記錄的信息,即有關(guān)表的整體情況的信息,這部分信息主要包括元素存儲區(qū)的容量和當前表中已有的元素個數(shù)兩項。

3、順序表的兩種基本實現(xiàn)方式

什么是Python中的順序表

1為一體式結(jié)構(gòu),存儲表信息的單元與元素存儲區(qū)以連續(xù)的方式安排在一塊存儲區(qū)里,兩部分數(shù)據(jù)的整體形成一個完整的順序表對象。一體式結(jié)構(gòu)整體性強,易于管理。但是由于數(shù)據(jù)元素存儲區(qū)域是表對象的一部分,順序表創(chuàng)建后,元素存儲區(qū)就固定了。

2為分離式結(jié)構(gòu),表對象里只保存與整個表有關(guān)的信息(即容量和元素個數(shù)),實際數(shù)據(jù)元素存放在另一個獨立的元素存儲區(qū)里,通過鏈接與基本表對象關(guān)聯(lián)。

 4、元素存儲區(qū)替換

一體式結(jié)構(gòu)由于順序表信息區(qū)與數(shù)據(jù)區(qū)連續(xù)存儲在一起,所以若想更換數(shù)據(jù)區(qū),則只能整體搬遷,即整個順序表對象(指存儲順序表的結(jié)構(gòu)信息的區(qū)域)改變了。分離式結(jié)構(gòu)若想更換數(shù)據(jù)區(qū),只需將表信息區(qū)中的數(shù)據(jù)區(qū)鏈接地址更新即可,而該順序表對象不變。

5、元素存儲區(qū)擴充

采用分離式結(jié)構(gòu)的順序表,若將數(shù)據(jù)區(qū)更換為存儲空間更大的區(qū)域,則可以在不改變表對象的前提下對其數(shù)據(jù)存儲區(qū)進行了擴充,所有使用這個表的地方都不必修改。只要程序的運行環(huán)境(計算機系統(tǒng))還有空閑存儲,這種表結(jié)構(gòu)就不會因為滿了而導致操作無法進行。人們把采用這種技術(shù)實現(xiàn)的順序表稱為動態(tài)順序表,因為其容量可以在使用中動態(tài)變化。

擴充的兩種策略

每次擴充增加固定數(shù)目的存儲位置,如每次擴充增加10個元素位置,這種策略可稱為線性增長。

特點:節(jié)省空間,但是擴充操作頻繁,操作次數(shù)多。

每次擴充容量加倍,如每次擴充增加一倍存儲空間。

特點:減少了擴充操作的執(zhí)行次數(shù),但可能會浪費空間資源。以空間換時間,推薦的方式。

6、順序表的增刪改查操作的Python代碼實現(xiàn)

# 創(chuàng)建順序表class Sequence_Table():    
    # 初始化
    def __init__(self):
        self.date = [None]*100
        self.length = 0    
    # 判斷是否已經(jīng)滿了
    def isFull(self):        
    if self.length>100:            
    print("該順序表已滿,無法添加元素")            
    return 1        
    else:            
    return 0    
    # 按下表索引查找
    def selectByIndex(self,index):        
    if index>=0 and index<=self.length-1:            
    return self.date[index]        
    else:            
    print("你輸入的下標不對,請重新輸入\n")            
    return 0        
    # 按元素查下標
    def selectByNum(self,num):
        isContain = 0        
        for i in range(0,self.length):            
        if self.date[i] == num:
                isContain = 1                
                print("你要查找的元素下標是%d\n"%i)        
                if isContain == 0:            
                print("沒有找你你要的數(shù)據(jù)")    
    # 追加數(shù)據(jù)
    def addNum(self,num):        
    if self.isFull() == 0:
            self.date[self.length] = num
            self.length += 1            
    # 打印順序表
    def printAllNum(self):        
    for i in range(self.length):            
    print("a[%s]=%s"%(i,self.date[i]),end=" ")        
    print("\n")        
    # 按下標插入數(shù)據(jù)
    def insertNumByIndex(self,num,index):        
    if index<0 or index>self.length:            
    return 0
        self.length += 1        
        for i in range(self.length-1,index,-1):
            temp = self.date[i]
            self.date[i] = self.date[i-1]
            self.date[i-1] = temp
        self.date[index] = num        
        return 1    # 按下標刪除數(shù)據(jù)
    def delectNumByIndex(self,index):        
    if self.length <= 0:            
    print("該順序表內(nèi)沒有數(shù)據(jù),不用刪除")            
        for i in range(index,self.length-1):
            temp = self.date[i]
            self.date[i] = self.date[i + 1]
            self.date[i + 1] = temp
        self.date[self.length-1] = 0
        self.length -= 1def main():    # 創(chuàng)建順序表對象
    seq_t = Sequence_Table()    
    # 插入三個元素
    seq_t.addNum(1)
    seq_t.addNum(2)
    seq_t.addNum(3)    
    # 打印驗證    
    seq_t.printAllNum()    
    # 按照索引查找
    num = seq_t.selectByIndex(2)    
    print("你要查找的數(shù)據(jù)是%d\n" % num)    
    # 按照索引插入數(shù)據(jù)
    seq_t.insertNumByIndex(4, 1)
    seq_t.printAllNum()    
    # 按照數(shù)字查下標
    seq_t.selectByNum(4)    
    #刪除數(shù)據(jù)
    seq_t.delectNumByIndex(1)
    seq_t.printAllNum()     
if __name__ == "__main__":
    main()

運行結(jié)果為:

a[0]=1 a[1]=2 a[2]=3 
你要查找的數(shù)據(jù)是3
a[0]=1 a[1]=4 a[2]=2 a[3]=3 
你要查找的元素下標是1
a[0]=1 a[1]=2 a[2]=3

7、順序表的增刪改查操作的C語言代碼實現(xiàn)

#include<stdio.h>
// 1、定義順序表的儲存結(jié)構(gòu)
typedef struct
{
    //用數(shù)組存儲線性表中的元素
    int data[100];
    // 順序表中的元素個數(shù)
    int length;
}Sequence_table,*p_Sequence_table;
// 2、順序表的初始化,
void initSequenceTable(p_Sequence_table T)
{
    // 判斷傳過來的表是否為空,為空直接退出
    if (T == NULL)
    {
        return;
    }
    // 設(shè)置默認長度為0
    T->length = 0;
}
// 3、求順序表的長度
int lengthOfSequenceTable(p_Sequence_table T)
{
    if (T==NULL)
    {
        return 0;
    }
    return T->length;
}
// 4、判斷順序表是否已滿
int isFull(p_Sequence_table T)
{
    if (T->length>=100)
    {
        printf("該順序表已經(jīng)裝滿,無法再添加元素");
        return 1;
    }
    return 0;
}
// 5、按序號查找
int selectSequenceTableByIndex(p_Sequence_table T,int index)
{
    if (index>=0&&index<=T->length-1)
    {
        return T->data[index];
    }
    printf("你輸入的序號不對,請重新輸入\n");
    return 0;
}
// 6、按內(nèi)容查找是否存在
void selectSequenceTableByNum(p_Sequence_table T,int num)
{
    int isContain = 0;
    for (int i=0; i<T->length; i++)
    {
        if (T->data[i] == num)
        {
            isContain = 1;
            printf("你要找的元素的下標是:%d\n",i);
        }
    }
    if (isContain == 0)
    {
        printf("沒有找到你要的數(shù)據(jù)\n");
    }
}
// 7、添加元素(在隊尾添加)
void addNumber(p_Sequence_table T,int num)
{
    // 順序表還沒有滿的時候
    if (isFull(T) == 0)
    {
        T->data[T->length] = num;
        T->length++;
    }
}
// 8、順序表的遍歷
void printAllNumOfSequenceTable(p_Sequence_table T)
{
    for (int i = 0; i<T->length; i++)
    {
        printf("T[%d]=%d ",i,T->data[i]);
    }
    printf("\n");
}
//9、插入操作
int insertNumByIndex(p_Sequence_table T, int num,int index)
{
    if (index<0||index>T->length)
    {
        return 0;
    }
    T->length++;
    for (int i = T->length-1; i>index; i--)
    {
        int temp = T->data[i];
        T->data[i] = T->data[i-1];
        T->data[i-1] = temp;
    }
    T->data[index] = num;
    return 1;
}
// 10、刪除元素
void delectNum(p_Sequence_table T,int index)
{
    if (T->length <= 0)
    {
        printf("該順序表中沒有數(shù)據(jù),不用刪除");
    }
    for (int i = index;i<T->length-1; i++)
    {
        int temp = T->data[i];
        T->data[i] = T->data[i+1];
        T->data[i+1] = temp;
    }
    T->data[T->length-1] = 0;
    T->length--;
}
int main(int argc, const char * argv[]) {
    
    // 創(chuàng)建順序表的結(jié)構(gòu)體
    Sequence_table seq_t;
    // 初始化
    initSequenceTable(&seq_t);
    // 添加數(shù)據(jù)
    addNumber(&seq_t, 1);
    addNumber(&seq_t, 2);
    addNumber(&seq_t, 3);
    // 打印驗證
    printAllNumOfSequenceTable(&seq_t);
    // 根據(jù)索引下標查內(nèi)容
    int num = selectSequenceTableByIndex(&seq_t, 2);
    printf("你查的數(shù)據(jù)是:%d\n",num);
    // 插入
    insertNumByIndex(&seq_t, 4, 1);
    printAllNumOfSequenceTable(&seq_t);
    // 根據(jù)內(nèi)容查下標
    selectSequenceTableByNum(&seq_t, 4);
    // 根據(jù)下標刪除數(shù)據(jù)
    delectNum(&seq_t, 1);
    printAllNumOfSequenceTable(&seq_t);
    return 0;
}

運行結(jié)果為:

T[0]=1 T[1]=2 T[2]=3 
你查的數(shù)據(jù)是:3
T[0]=1 T[1]=4 T[2]=2 T[3]=3 
你要找的元素的下標是:1
T[0]=1 T[1]=2 T[2]=3

上述內(nèi)容就是什么是Python中的順序表,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當前標題:什么是Python中的順序表
當前網(wǎng)址:http://aaarwkj.com/article14/pjcdge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站設(shè)計公司、虛擬主機、網(wǎng)站改版、

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
精品一级人片内射视频| 久久香蕉国产线看观看av| 亚洲社区一区二区三区四区| 97精品在线视频免费| 国内精日韩欧中文的话| 成人精品欧美欧美一级乱黄| 亚洲乱色熟女一区二区三区麻豆 | 亚洲奇米精品一区二区| 亚洲欧美av中文日韩二区| 亚洲国产精品综合久久网络| 亚洲香蕉一区二区免费| 欧美日韩免费爱爱视频| 天天操时时操夜夜操| 日韩电影在线播放中文字幕| 免费av在线网址网站| 欧洲一区二区三区黄色| 强乱人妻中文字幕日本| 久久精品91久久久| 国产91在线拍揄自揄| 男人的av天堂东京热| 色综合色很天天综合色| 日本一二不卡高清在线视频| 欧美黄片完整版在线观看| 亚洲中文字幕乱码熟女在线| 欧美在线日韩一区二区| 久久精品国产免费夜夜嗨 | 日本一级二级三级在线看| 国产欧美日韩综合一区| 亚洲欧美韩国日本成人综合| 99热国产这里只有精品| 日韩美女毛片啪啪响| 蜜臀国产综合久久第一页| 日本一区二区 视频| 色男人天堂网在线视频| 中文字幕免费日本在线| 精品一区二区三区乱码中文| 欧美小黄片在线免费看| 欧美aⅴ精品一区二区三区| 日韩毛片资源在线观看| 亚洲免费三级黄色片| 在线免费观看日本91|