新聞中心
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)二
項(xiàng)目地址
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)鏈隊(duì)的主函數(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;
}
當(dāng)前題目:c語言寫數(shù)據(jù)結(jié)構(gòu)函數(shù) c語言數(shù)據(jù)結(jié)構(gòu)怎么寫
瀏覽地址:http://www.ef60e0e.cn/article/hjssec.html