關於線性表

2021-07-05 13:22:08 字數 1728 閱讀 2095

線性表類模板:

template < class t >

class list

;

順序錶類定義

class arrlist :public list 

~arrlist()

void clear()

int length();

bool insert(const int p, const t value);

//在位置p上插入乙個元素value,表的長度增1

bool delete(const int p); //刪除位置p上的元素value,表的長度減1

bool getpos(int & p, const t value);

//查詢值為value的元素並返回其位置

bool getvalue(const int p, t& value);

//把位置p上的元素值返回到變數value中

bool setvalue(const int p, const t value);

//用value修改位置p的元素值

};

順序表的插入演算法

//設元素的型別為t,alist是儲存順序表的陣列,maxsize是其最大長度

//p是新元素value的插入位置,插入成功則返回true,否則返回false

template bool arrlist::insert(const int p, const t value)

if (p < 0 || p > curlen)

for (i = curlen; i > p; i--)

alist[i] = alist[i - 1];

alist[p] = value;

curlen++;

return true;

}

順序表的刪除演算法

template bool arrlist::delete(const int p)

if (p < 0 || p > curlen - 1)

for (i = p; i < curlen - 1; i++)

arrlist[i] = arrlist[i + 1];

curlen--;

return true;

}

單鏈表的節點定義

templateclass link

link(const link* nextvalue)

};

單鏈表定義

templateclass lnklist : public list;

查詢單鏈表中的第i個節點

//函式返回值是找到的節點指標

templatelink*lnklist::setpos(int i)

return p;

}

單鏈表刪除演算法

templatebool lnklist::delete(const int i)

q = p->next;

if (q == tail)

else if (q != null)

return true;

}

鏈式線性表和順序線性表

在這裡插入 片 線性表的儲存結構 typedef struct seqlist typedef struct seqlist 順序表基本操作 初始化順序表在這裡插入 片 intseqlist init seqlist list,int size 插入資料元素在這裡插入 片 intseqlist in...

線性表演算法題庫 線性表習題

鍊錶。若指標p指向某結點時,能夠根據該指標找到其直接後繼,能夠順後繼指標鏈找到p結點後的結點。但是由於不知道其頭指標,所以無法訪問到p指標指向的結點的直接前趨。因此無法刪去該結點。2.雙鏈表。由於這樣的鍊錶提供雙向指標,根據p結點的前趨指標和後繼指標可以查詢到其直接前趨和直接後繼,從而可以刪除該結點...

刪除線性表節點 線性表

submit 81 solved 66 submit status web board 已知長度為n的線性表a採用順序儲存結構,請寫一時間複雜度為0 n 空間複雜度為0 1 的演算法,該演算法刪除線性表中所有值為item的資料元素。o 1 表示演算法的輔助空間為常量 輸入 n 6 輸入資料 1 2 ...