表(演算法分析與設計筆記)

2021-07-17 03:31:31 字數 2448 閱讀 2680

對於非空的線性表而言,它具有如下4個特點:

①表中有且僅有乙個開始節點

②表中有且僅有乙個終端節點

③除了開始節點和終端節點外,其他每個元素前面均有且僅有乙個稱為直接前趨的資料元素,它的後面均有且僅有乙個稱為直接後繼的資料元素

④雖然不同線性表的資料元素可以是各種各樣的,但是同一線性表中的資料元素必須具有相同的資料型別

typedef int elemtlemype;//定義元素型別

class sqlist

(2)空間分配

陣列屬於複合型資料型別,在使用它之前,必須為其分配空間

//引數initsize為使用者所申請的空間大小

sqlist :: sqlist()

if(isfull())//表滿重新分配記憶體

elemtype* p=&(elem[i-1]);

elemtype* q=&(elem[length-1]);

for(;q>=p;--q)

*(q+1)=*q;

*p=e;

++length;

return

true;

}

(4)刪除操作

bool sqlist::del(int i)

elemtype* p=&(elem[i-1]);

elemtype* q=&(elem[length-1]);

for(++p;p<=q;++p);

*(p-1)=*p;

--length;

return true;

}

乙個完整的示例:

//標頭檔案 sqlist.h

#include

#ifndef sqlist_h_

#define sqlist_h_//定義標頭檔案

#define initsize 100//初始化大小

#define increment 10//增長步長

typedef

int elemtype;//定義元素型別

class sqlist

;#endif // sqlist_h_

//過載函式

#include"seqlist.h"

using

namespace

std;

//建構函式

sqlist::sqlist()

//是否為空

bool sqlist::isempty() const

//是否滿了

bool sqlist::isfull() const

elemtype sqlist::getelem(int i) const

else

return elem[i-1];

}bool sqlist::insert(int i,elemtype e)

if(isfull())//表滿重新分配記憶體

elemtype* p=&(elem[i-1]);

elemtype* q=&(elem[length-1]);

for(;q>=p;--q)

*(q+1)=*q;

*p=e;

++length;

return

true;

}bool sqlist::insert(elemtype e)

elemtype* p=&(elem[length]);

*p=e;

++length;

return

true;

}void sqlist::creat()

else}}

void sqlist::merge(sqlist &la,sqlist &lb)

else

}while(i<=la.length)

while(j<=lb.length)

cout

<

cout

elemtype* p=&(elem[i-1]);

elemtype* q=&(elem[length-1]);

for(++p;p<=q;++p)

*(p-1)=*p;

--length;

return

true;

}void sqlist::displayelem()

//主程式

演算法設計與分析筆記(一)

遞迴與分治策略 遞迴的概念,典型應用 hanoi問題,程式如下 include void hanoi int n,char a,char b,char c void main 分治的基本思想 將乙個規模為n的問題分解成k個規模較小的子問題,然後遞迴解決這些問題。二分搜尋技術 include defi...

演算法分析與設計學習筆記1

下面哪乙個不是演算法的特性?同乙個數學模型使用不同的資料結構會有不同的演算法,有效性有很大差別 計算此偽 表示的演算法中加法的執行次數 答案 2t 1 1 解析 此類問題適合初學者進行練習,初學者接觸此類問題最好找從頭到尾梳理一遍,將題中所給資料帶入所給偽 中進行計算來梳理思路。運算過程 n最開始為...

演算法設計與分析學習筆記(一)

輸入包含n個整數是陣列a和整數x,求出滿足a i a j x的i和j,如果沒有這樣的元素和,則返回 1,否則返回1 暴力法 思路 設定兩個for迴圈,第乙個設定基準數,然後利用已知數x減去基準數之後,再使用乙個for迴圈來進行匹配減去得到的數,如果存在該數,則返回1.如果不存在,則繼續找下乙個基準數...