成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python數(shù)據(jù)結(jié)構(gòu)之線性順序表

開發(fā) 后端
線性表(linear list)是數(shù)據(jù)結(jié)構(gòu)的一種,一個(gè)線性表是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。本文結(jié)合了互聯(lián)網(wǎng)上的一些代碼,以及結(jié)合百度百科關(guān)于線性順序表的定義,實(shí)現(xiàn)了全部代碼。

[[410561]]

本文轉(zhuǎn)載自微信公眾號(hào)「python與大數(shù)據(jù)分析」,作者一只小小鳥鳥 。轉(zhuǎn)載本文請(qǐng)聯(lián)系python與大數(shù)據(jù)分析公眾號(hào)。

線性表(linear list)是數(shù)據(jù)結(jié)構(gòu)的一種,一個(gè)線性表是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。本文結(jié)合了互聯(lián)網(wǎng)上的一些代碼,以及結(jié)合百度百科關(guān)于線性順序表的定義,實(shí)現(xiàn)了全部代碼。

在稍復(fù)雜的線性表中,一個(gè)數(shù)據(jù)元素可由多個(gè)數(shù)據(jù)項(xiàng)(item)組成,此種情況下常把數(shù)據(jù)元素稱為記錄(record),含有大量記錄的線性表又稱文件(file)。

線性表中的個(gè)數(shù)n定義為線性表的長(zhǎng)度,n=0時(shí)稱為空表。在非空表中每個(gè)數(shù)據(jù)元素都有一個(gè)確定的位置,如用ai表示數(shù)據(jù)元素,則i稱為數(shù)據(jù)元素ai在線性表中的位序。

線性表的相鄰元素之間存在著序偶關(guān)系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一個(gè)順序表,則表中ai-1領(lǐng)先于ai,ai領(lǐng)先于ai+1,稱ai-1是ai的直接前驅(qū)元素,ai+1是ai的直接后繼元素。當(dāng)i=1,2,…,n-1時(shí),ai有且僅有一個(gè)直接后繼,當(dāng)i=2,3,…,n時(shí),ai有且僅有一個(gè)直接前驅(qū) [1] 。

需要轉(zhuǎn)換思想的是,線性表中的參數(shù)也好,最大數(shù)量也好,要在列表序號(hào)基礎(chǔ)上加1

代碼如下:

  1. # 線性表(linear list)是數(shù)據(jù)結(jié)構(gòu)的一種,一個(gè)線性表是n個(gè)具有相同特性的數(shù)據(jù)元素的有限序列。 
  2. # 在稍復(fù)雜的線性表中,一個(gè)數(shù)據(jù)元素可由多個(gè)數(shù)據(jù)項(xiàng)(item)組成,此種情況下常把數(shù)據(jù)元素稱為記錄(record),含有大量記錄的線性表又稱文件(file)。 
  3. # 線性表中的個(gè)數(shù)n定義為線性表的長(zhǎng)度,n=0時(shí)稱為空表。在非空表中每個(gè)數(shù)據(jù)元素都有一個(gè)確定的位置,如用ai表示數(shù)據(jù)元素,則i稱為數(shù)據(jù)元素ai在線性表中的位序。 
  4. # 線性表的相鄰元素之間存在著序偶關(guān)系。如用(a1,…,ai-1,ai,ai+1,…,an)表示一個(gè)順序表,則表中ai-1領(lǐng)先于ai,ai領(lǐng)先于ai+1,稱ai-1是ai的直接前驅(qū)元素,ai+1是ai的直接后繼元素。當(dāng)i=1,2,…,n-1時(shí),ai有且僅有一個(gè)直接后繼,當(dāng)i=2,3,…,n時(shí),ai有且僅有一個(gè)直接前驅(qū) [1]  。 
  5. # 1)MakeEmpty(L) 這是一個(gè)將L變?yōu)榭毡淼姆椒?nbsp;
  6. # 2)Length(L) 返回表L的長(zhǎng)度,即表中元素個(gè)數(shù) 
  7. # 3)Get(L,i) 這是一個(gè)函數(shù),函數(shù)值為L(zhǎng)中位置i處的元素(1≤i≤n) 
  8. # 4)Prior(L,i) 取i的前驅(qū)元素 
  9. # 5)Next(L,i) 取i的后繼元素 
  10. # 6)Locate(L,x) 這是一個(gè)函數(shù),函數(shù)值為元素x在L中的位置 
  11. # 7)Insert(L,i,x)在表L的位置i處插入元素x,將原占據(jù)位置i的元素及后面的元素都向后推一個(gè)位置 
  12. # 8)Delete(L,p) 從表L中刪除位置p處的元素 
  13. # 9)IsEmpty(L) 如果表L為空表(長(zhǎng)度為0)則返回true,否則返回false 
  14. # 10)Clear(L)清除所有元素 
  15. # 11)Init(L)同第一個(gè),初始化線性表為空 
  16. # 12)Traverse(L)遍歷輸出所有元素 
  17. # 13)Find(L,x)查找并返回元素 
  18. # 14)Update(L,x)修改元素 
  19. # 15)Sort(L)對(duì)所有元素重新按給定的條件排序 
  20. # 16) strstr(string1,string2)用于字符數(shù)組的求string1中出現(xiàn)string2的首地址 
  21. class Sequencelist(object): 
  22.     def __init__(self, datatype=int, maxlength=10): 
  23.         self.maxlength = maxlength 
  24.         self.currentnum = 0 
  25.         self.data = [None] * self.maxlength 
  26.         self.datatype = datatype 
  27.  
  28.     def __setitem__(self, key, value): 
  29.         if not isinstance(keyint): 
  30.             raise TypeError 
  31.         if not isinstance(value, self.datatype): 
  32.             raise TypeError("數(shù)據(jù)類型不符合{0}".format(self.datatype)) 
  33.         if 0 <= key <= self.currentnum: 
  34.             self.data[key-1] = value 
  35.         else
  36.             raise IndexError 
  37.  
  38.     def __getitem__(self, key): 
  39.         if not isinstance(keyint): 
  40.             raise TypeError 
  41.         if 1 <= key <= self.currentnum: 
  42.             return self.data[key-1] 
  43.         else
  44.             raise IndexError 
  45.  
  46.     def __len__(self): 
  47.         return self.currentnum 
  48.  
  49.     def __repr__(self): 
  50.         return '__repr__={}'.format(str(self.data)) 
  51.  
  52.     def __str__(self): 
  53.         return '__str__={}'.format(str(self.data[:self.currentnum])) 
  54.  
  55.     def isempty(self): 
  56.         return self.currentnum == 0 
  57.  
  58.     def isfull(self): 
  59.         return self.currentnum == self.maxlength 
  60.  
  61.     def maxlength(self): 
  62.         return self.maxlength 
  63.  
  64.     def makeempty(self): 
  65.         self.clear() 
  66.  
  67.     def length(self): 
  68.         return self.__len__() 
  69.  
  70.     def count(self): 
  71.         return self.__len__() 
  72.  
  73.     def get(self, key): 
  74.         return self.__getitem__(key
  75.  
  76.     def set(self, key,value): 
  77.         self.__setitem__(key,value) 
  78.  
  79.     def prior(self, key): 
  80.         assert key>1 and key <self.currentnum+1 ,'數(shù)組越界' 
  81.         return self.data[key-2] 
  82.  
  83.     def next(self, key): 
  84.         assert key>=1 and key <self.currentnum, '數(shù)組越界' 
  85.         return self.data[key
  86.  
  87.     def locate(self, value,start=0): 
  88.         for i in range(start,self.currentnum): 
  89.             if self.data[i]==value: 
  90.                 return i+1 
  91.         raise ValueError("{} is not find in list".format(value)) 
  92.  
  93.     def index(self,value,start=0): 
  94.         return self.locate(value,start) 
  95.  
  96.     def append(self,value): 
  97.         if self.isfull(): 
  98.             print('list is full'
  99.             return 
  100.         else
  101.             self.data[self.currentnum]=value 
  102.             self.currentnum+=1 
  103.  
  104.     def insert(self, key, value): 
  105.         if not isinstance(key,self.datatype): 
  106.             raise TypeError 
  107.         if key<1: 
  108.             raise IndexError 
  109.         if key>=self.currentnum: 
  110.             self.append(value) 
  111.         else
  112.             for i in range(self.currentnum,key-1,-1): 
  113.                 self.data[i]=self.data[i-1] 
  114.             self.data[key-1]=value 
  115.             self.currentnum+=1 
  116.  
  117.     def delete(self, key): 
  118.         if not isinstance(key, self.datatype): 
  119.             raise TypeError 
  120.         if key < 1 and key>self.currentnum: 
  121.             raise IndexError 
  122.         else
  123.             for i in range(key-1,self.currentnum): 
  124.                 self.data[i]=self.data[i+1] 
  125.             self.currentnum-=1 
  126.  
  127.     def pop(self): 
  128.         return self.delete(self.currentnum) 
  129.  
  130.     def clear(self): 
  131.         self.__init__() 
  132.  
  133.     def init(self): 
  134.         self.__init__() 
  135.  
  136.     def reverse(self): 
  137.         i,j=0,self.currentnum-1 
  138.         while i<j: 
  139.             self.data[i],self.data[j]=self.data[j],self.data[i] 
  140.             i,j=i+1,j-1 
  141.             #print(self.data) 
  142.  
  143.     def find(self, value,start=0): 
  144.         return self.locate(self,value,start) 
  145.  
  146.     def update(self, key,value): 
  147.         self.__setitem__(key,value) 
  148.  
  149.     def sort(self): 
  150.         for i in range(0,self.currentnum-1): 
  151.             for j in range(i+1,self.currentnum): 
  152.                 if self.data[i]>self.data[j]: 
  153.                     self.data[i],self.data[j]=self.data[j],self.data[i] 
  154.  
  155.     def strstr(string1, string2): 
  156.         pass 
  157.  
  158.  
  159. if __name__ == '__main__'
  160.     a=Sequencelist() 
  161.     a.append(1) 
  162.     a.append(2) 
  163.     a.append(3) 
  164.     print(a) 
  165.     print(repr(a)) 
  166.     b=a.locate(2) 
  167.     print(b) 
  168.     print(a.isempty()) 
  169.     print(a.isfull()) 
  170.     print(len(a)) 
  171.     print(a.length()) 
  172.     #print(a.prior(1)) 
  173.     # AssertionError: 數(shù)組越界 
  174.     print(a.prior(2)) 
  175.     print(a.prior(3)) 
  176.     print(a.next(1)) 
  177.     print(a.next(2)) 
  178.     print(a) 
  179.     print(a.get(2)) 
  180.     a.insert(2,4) 
  181.     print(a) 
  182.     a.delete(2) 
  183.     print(a) 
  184.     print(a.length()) 
  185.     a.pop() 
  186.     print(a) 
  187.     print(a.length()) 
  188.     a.update(2,4) 
  189.     print(a) 
  190.     print(a.index(4)) 
  191.     # print(a.index(5)) 
  192.     # ValueError: 5 is not find in list 
  193.     print(a) 
  194.     a.reverse() 
  195.     print(a) 
  196.     a.append(3) 
  197.     a.append(5) 
  198.     # a.append(2) 
  199.     print(a) 
  200.     a.sort() 
  201.     print(a) 

結(jié)果如下:

  1. C:\python\pyproject\pythonalgorithms\venv\Scripts\python.exe C:/python/pyproject/pythonalgorithms/sequencelist.py 
  2. __str__=[1, 2, 3] 
  3. __repr__=[1, 2, 3, None, None, None, None, None, None, None] 
  4. False 
  5. False 
  6. __str__=[1, 2, 3] 
  7. __str__=[1, 4, 2, 3] 
  8. __str__=[1, 2, 3] 
  9. __str__=[1, 2] 
  10. __str__=[1, 4] 
  11. __str__=[1, 4] 
  12. __str__=[4, 1] 
  13. __str__=[4, 1, 3, 5] 
  14. __str__=[1, 3, 4, 5] 
  15.  
  16. Process finished with exit code 0 

 

責(zé)任編輯:武曉燕 來(lái)源: python與大數(shù)據(jù)分析
相關(guān)推薦

2018-06-06 08:54:23

數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2009-08-12 18:35:17

C#數(shù)據(jù)結(jié)構(gòu)

2009-08-11 14:30:32

C#數(shù)據(jù)結(jié)構(gòu)與算法

2023-11-06 06:43:23

單鏈表查詢數(shù)據(jù)結(jié)構(gòu)

2009-08-11 14:14:42

C#數(shù)據(jù)結(jié)構(gòu)與算法

2012-04-28 14:21:47

Java數(shù)據(jù)結(jié)構(gòu)線性結(jié)構(gòu)

2021-04-20 09:18:41

順序存儲(chǔ)結(jié)構(gòu)

2021-05-12 14:09:35

鏈表數(shù)據(jù)結(jié)構(gòu)線性結(jié)構(gòu)

2021-07-16 07:57:34

Python數(shù)據(jù)結(jié)構(gòu)

2009-08-11 14:36:17

C#數(shù)據(jù)結(jié)構(gòu)與算法線性表

2021-07-13 07:52:03

Python數(shù)據(jù)結(jié)構(gòu)

2021-07-15 06:43:12

Python數(shù)據(jù)結(jié)構(gòu)

2017-03-01 13:58:46

Python數(shù)據(jù)結(jié)構(gòu)鏈表

2020-06-09 08:13:15

PHP數(shù)據(jù)結(jié)構(gòu)

2023-03-13 10:08:31

數(shù)據(jù)結(jié)構(gòu)算法

2023-03-28 07:44:23

數(shù)據(jù)結(jié)構(gòu)數(shù)組

2023-02-08 07:52:36

跳躍表數(shù)據(jù)結(jié)構(gòu)

2017-08-31 09:45:43

JavaArrayList數(shù)據(jù)

2020-05-13 09:14:16

哈希表數(shù)據(jù)結(jié)構(gòu)

2012-02-02 10:21:05

單鏈表nexthead
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久久一区二区三区 | 国产中文字幕在线观看 | 最新国产福利在线 | 在线免费观看成年人视频 | 毛片a级 | 一区二区三区视频在线 | 久久久999成人 | 亚洲成人一区 | 国产精品色 | 欧美一级在线 | 中文字幕日韩一区二区 | 日韩国产欧美 | 欧美日韩亚洲一区 | 99日韩| 日韩在线观看一区 | 日韩精品一区二 | 黄色国产 | 中文字幕国产一区 | 一区影院 | 青青久在线视频 | 国产免费一二三区 | 中文字幕av网站 | 国产日韩欧美91 | 日韩高清一区 | 91精品久久久久久久 | 欧美精品一区三区 | 国产一区视频在线 | 欧美色影院| 伊人免费视频二 | 日本韩国电影免费观看 | 精品亚洲一区二区 | 国产91丝袜在线播放 | 欧美激情欧美激情在线五月 | 久久久久久免费毛片精品 | 精品国产伦一区二区三区观看方式 | 亚洲欧美日韩网站 | 99久久99 | 久久午夜精品福利一区二区 | 精品欧美一区二区在线观看欧美熟 | 国产激情免费视频 | 欧美自拍网站 |