日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线性表----顺序表

發布時間:2023/12/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线性表----顺序表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

線性表的定義

線性表是具有相同數據類型的n個數據元素的有限序列

邏輯特性

除第一個元素外,每個元素只有一個前驅,除最后一個元素外,每個元素都有一個后繼

物理結構

線性表的存儲結構有順序存儲結構和鏈式存儲結構,前者稱為順序表,后者稱為鏈表。

順序表

線性表的順序存儲又稱順序表。特點是用一組地址連續的存儲單元依次存儲數據,從而使邏輯相鄰的兩個元素在物理地址上也相連。

#define MaxSize 50 //定義線性表最大長度 typedef int ElemType; //定義數據類型typedef struct{ElemType data[MaxSize]; //用一維數組來存儲數據int length; //定義線性表的當前長度 }SqList;

上面是用一位數組是靜態分配,也可以用動態分配

#define InitSize 100 typedef struct{ ElemType *data; int MaxSize,length; }SqList;

順序表特點

  • 隨機訪問
  • 存儲密度高,因為物理地址連續

基本操作

1、插入

在順序表L的第i個位置插入新元素e,如果插入位置i不合法,則返回false;如果順序表滿了,返回false;否則,將順序表的第i個元素及其后所有的元素右移一位

bool ListInsert(SqList& L, int i, ElemType e) {if (i<1 || i>L.length + 1) //此處注意是length+1,不能是MaxSizereturn false;if (L.length >= MaxSize)return false;for (int j=L.length;j>=i;j--){L.data[j] = L.data[j-1];}L.length++;return true; }

時間復雜度問題:
下面理解的時候,可以將n理解為length

  • 最好情況下:在表尾插入,即i=n+1,后移語句不會執行,時間復雜度為T(n)=0(1);
  • 最壞情況:在表頭插入,即i=1,后移n次,時間復雜度為0(n)
  • 平均情況:p=1/(n+1),時間復雜度為0(n)
2、刪除操作

刪除順序表L中第i個位置的元素,若成功則返回true,并將被刪除的元素返回,否則返回false

  • 判斷i的值是否正確
  • 取刪除的元素
  • 將被刪除元素后面的所有元素依次向前移動一位
bool ListDelete(SqList& L, int i, ElemType& e) {if (i<1 || i>L.length)return false;e = L.data[i - 1];for (int j = i; j < L.length; j++)L.data[j - 1] = L.data[j];L.length--;return true; }

時間復雜度

  • 最好情況:刪除表尾元素(i=n),無序移動,時間復雜度為0(1)
  • 最壞情況:刪除表頭元素(i=1),需要移動第一個元素外所有的元素,時間復雜度為0(n)
  • 平均情況:時間復雜度為0(n)
3、按值查找

在順序表查找第一個元素值等于e的元素,并發回其位序

int LocateElem(SqList& L, ElemType e) {for (int i = 0; i < L.length; i++) {if (L.data[i] == e)return i + 1;}return 0; }

時間復雜度

  • 最好情況:第一個元素就是,在表頭,T(n)=0(1)
  • 最壞情況:查找元素在表尾或者不存在時,需要比較n次,時間復雜度為0(n)
  • 平均情況:T(n)=0(n)

缺點

順序表的移動、刪除需要移動很多的元素,影響運行效率

總結

以上是生活随笔為你收集整理的线性表----顺序表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。