c語言寫數(shù)據(jù)結(jié)構(gòu)函數(shù) c語言數(shù)據(jù)結(jié)構(gòu)怎么寫

C語言板 數(shù)據(jù)結(jié)構(gòu) 進(jìn)棧 函數(shù)到底怎么寫

看一個棧的簡單實(shí)現(xiàn),所有代碼都寫在一個頭文件中,實(shí)際的話,最好把聲明和實(shí)現(xiàn)分開。

創(chuàng)新互聯(lián)基于成都重慶香港及美國等地區(qū)分布式IDC機(jī)房數(shù)據(jù)中心構(gòu)建的電信大帶寬,聯(lián)通大帶寬,移動大帶寬,多線BGP大帶寬租用,是為眾多客戶提供專業(yè)服務(wù)器托管報價,主機(jī)托管價格性價比高,為金融證券行業(yè)聯(lián)通機(jī)房服務(wù)器托管,ai人工智能服務(wù)器托管提供bgp線路100M獨(dú)享,G口帶寬及機(jī)柜租用的專業(yè)成都idc公司。

#ifndef STACK_H

#define STACK_H

class Stack

{

public:

Stack();

Stack(const Stack copy);

Stack operator= (const Stack copy);

~Stack();

int getHeight() const;

bool isEmpty();

bool push(const int e);

bool pop(int e);

bool top(int e) const;

private:

int count;

int element[MAX_SIZE];

};

Stack::Stack()

{

count = 0;

}

Stack::Stack(const Stack copy)

{

this-count = copy.count;

for(int i = 0; i copy.count; i++)

{

element[i] = copy.element[i];

}

}

Stack Stack::operator =(const Stack copy)

{

if(copy != this)

{

this-count = copy.count;

for (int i = 0; i copy.count; i++)

{

element[i] = copy.element[i];

}

}

return *this;

}

Stack::~Stack()

{

count = 0;

}

int Stack::getHeight() const

{

return count;

}

bool Stack::isEmpty()

{

return count == 0;

}

bool Stack::push(const int e)

{

if (getHeight() == MAX_SIZE)

{

return false;

}

element[count++] = e;

return true;

}

bool Stack::pop(int e)

{

if (isEmpty() )

{

return false;

}

e = element[count--];

return true;

}

bool Stack::top(int e) const

{

e = element[count - 1];

return true;

}

#endif

數(shù)據(jù)結(jié)構(gòu)c語言那些函數(shù)的聲明怎么寫

int add(int x, int y); //這就是函數(shù)聲明

int main(void)

{

........

}

int add(int x, int y) //函數(shù)定義

{

........

}

C語言實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)(一)

實(shí)現(xiàn)了鏈表,棧、哈希表等

哈希表由數(shù)組加鏈表實(shí)現(xiàn)。通過計算key的哈希值,將哈希值轉(zhuǎn)成int類型并與數(shù)組長度進(jìn)行與運(yùn)算得到數(shù)組下標(biāo),數(shù)組每個元素都是一個鏈表,默認(rèn)為NULL。

通過InitHashTable函數(shù)得到初始化的哈希表。已實(shí)現(xiàn)功能有:添加鍵值、刪除鍵值、根據(jù)鍵獲取值,清理所有鍵值對、回收哈希表,可以根據(jù)例子遍歷鍵值。

Key可以擴(kuò)展為任何類型,但需要實(shí)現(xiàn)相應(yīng)類型HashCode的算法,此處只支持字符串類型。

C語言實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)二

項目地址

md5.h

md5.c

m_hashtable.h

m_hashtable.c

測試使用

c語言版數(shù)據(jù)結(jié)構(gòu)圖的一些基本操作函數(shù)如下,有三個地方不了解,請各位幫幫忙?

(1)問題三:

i=LocateVex(*G,va);

j=LocateVex(*G,vb);

*G不是指針,是指針G所指對象,就是ALGraph類型。程序中多處使用變量G,但是不同的地方,含義不同。在void CreateGraph(ALGraph *G)里面,G是一個指針,因此,引用其所指對象,要用*G。其他情況下,ALGraph G,G不是指針。

(2)第一:這個void DFSTraverse(ALGraph G,void(*print)(char*)) 為什么不能直接調(diào)用print函數(shù),像調(diào)用DFS函數(shù)一樣?可以的,使用函數(shù)指針是為以后任意擴(kuò)展輸出程序,以適應(yīng)不同需要,并且可以作為參數(shù)傳遞。

(3)第二:FirstAdjVex(G,G.vertices[v].data)為什么要用頂點(diǎn),用了之后又取位置,而不直接用位置,會有什么漏洞嗎?不會

int FirstAdjVex(ALGraph G,VertexType v)

{

ArcNode *p;

int v1;

v1=LocateVex(G,v);

p=G.vertices[v1].firstarc;

if(p)

return p-adjvex;

else

return -1;

}

利用已經(jīng)定義的定位函數(shù)LocateVex直接定位頂點(diǎn)v,然后直接讀取其firstarc,很自然的過程。

C語言數(shù)據(jù)結(jié)構(gòu)鏈隊的主函數(shù)怎么調(diào)用?主函數(shù)怎么寫?

主函數(shù)里調(diào)用就像寫函數(shù)定義一樣,比如調(diào)用創(chuàng)建表的,就這樣:

#include?stdio.h

struct?Linklist?{?

...

};

typedef?Linklist*?LinkList;

int?CreateList(LinkList?LstMe)?{

...

}??

int?main()?{

LinkList?LstDemo?=?(LinkList)?malloc?(sizeof(Linklist));

CreateList(LstDemo);?//?調(diào)用建表

free?(LstDemo);

return?0;

}

網(wǎng)站題目:c語言寫數(shù)據(jù)結(jié)構(gòu)函數(shù) c語言數(shù)據(jù)結(jié)構(gòu)怎么寫
文章位置:http://muchs.cn/article42/hjssec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、標(biāo)簽優(yōu)化品牌網(wǎng)站制作、外貿(mào)建站Google、ChatGPT

廣告

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

網(wǎng)站托管運(yùn)營