版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Python程序員面試分類(lèi)真題31.
實(shí)現(xiàn)一個(gè)棧的數(shù)據(jù)結(jié)構(gòu),使其具有以下方法:壓棧、彈棧、取棧頂元素、判斷棧是否為空以及獲取棧中元素個(gè)數(shù)。正確答案:棧的實(shí)現(xiàn)有兩種方法,分別為采用數(shù)組來(lái)實(shí)現(xiàn)和采用鏈表(江南博哥)來(lái)實(shí)現(xiàn)。下面分別詳細(xì)介紹這兩種方法。
方法一:數(shù)組實(shí)現(xiàn)
在采用數(shù)組來(lái)實(shí)現(xiàn)棧的時(shí)候,??臻g是一段連續(xù)的空間。實(shí)現(xiàn)思路如下圖所示。
從上圖中可以看出,可以把數(shù)組的首元素當(dāng)做棧底,同時(shí)記錄棧中元素的個(gè)數(shù)size,假設(shè)數(shù)組首地址為arr,從上圖可以看出,壓棧的操作其實(shí)是把待壓棧的元素放到數(shù)組arr[size]中,然后執(zhí)行size+操作;同理,彈棧操作其實(shí)是取數(shù)組arr[size-1]元素,然后執(zhí)行size-操作。根據(jù)這個(gè)原理可以非常容易實(shí)現(xiàn)棧,示例代碼如下:
classMyStack:
#模擬棧
def__init__(self):
self.items=[]
#撐判斷棧是否為空
defisEmpty(self):
returnlen(self.items)==0
#返回棧的大小
defsize(self):
returnlen(self.items)
#返回棧頂元素
deftop(self):
ifnotself.isEmpty():
returnelf.items[len(self.items)-1]
else:
returnNone
#彈棧
defpop(self):
iflen(self.items)>0:
returnself.items.pop()
else:
print"棧已經(jīng)為空"
returnNone
#壓棧
defpush(self,item):
self.items.append(item)
if__name__=="__main__":
s=MyStack()
s.push(4)
print"棧頂元素為:"+str(s.top())
print"棧大小為:"+str(s.size())
s.pop()
prmt"彈棧成功"
s.pop()
方法二:鏈表實(shí)現(xiàn)
在創(chuàng)建鏈表的時(shí)候經(jīng)常采用一種從頭結(jié)點(diǎn)插入新結(jié)點(diǎn)的方法,可以采用這種方法來(lái)實(shí)現(xiàn)棧,最好使用帶頭結(jié)點(diǎn)的鏈表,這樣可以保證對(duì)每個(gè)結(jié)點(diǎn)的操作都是相同的,實(shí)現(xiàn)思路如下圖所示。
在上圖中,在進(jìn)行壓棧操作的時(shí)候,首先需要?jiǎng)?chuàng)建新的結(jié)點(diǎn),把待壓棧的元素放到新結(jié)點(diǎn)的數(shù)據(jù)域中,然后只需要(1)和(2)兩步就實(shí)現(xiàn)了壓棧操作(把新結(jié)點(diǎn)加到了鏈表首部)。同理,在彈棧的時(shí)候,只需要進(jìn)行(3)的操作就可以刪除鏈表的第一個(gè)元素,從而實(shí)現(xiàn)彈棧操作。實(shí)現(xiàn)代碼如下:
classLNode:
def__new__(self,x):
self.data=x
self.next=None
classMyStack:
def__init__(self):
#pHead=LNode()
self.data=None
self.nexFNone
#判斷stack是否為空,如果為空返回true,否則返回false
defempty(self):
ifself.next==None:
returnTrue
else:
returnFalse
#獲取棧中元素的個(gè)數(shù)
defsize(self):
size=0
p=self.next
whilep!=None:
p=p.next
size+=1
returnsize
#入棧:把e放到棧頂
defpush(self,e):
p=LNode
p.data=e
p.next=self.next
self.next=p
#出棧,同時(shí)返回棧頂元素
defpop(self):
tmp=self.next
iftmp!=None:
self.next=tmp.next
returntmp.data
print"棧已經(jīng)為空"
returnNone
#取得棧頂元素
deftop(self):
ifself.next!=None:
returnself.next.data
print"棧已經(jīng)為空"
returnNone
if__name__=="__main__":
stack=MyStack()
stack.push(1)
print"棧頂元素為:"+str(stack.top())
print"棧大小為:"+str(stack.size())
stack.pop()
print"彈棧成功"
stack.pop()
程序的運(yùn)行結(jié)果為:
棧頂元素為:1
棧大小為:1
彈棧成功
棧已經(jīng)為空
兩種方法的對(duì)比:
采用數(shù)組實(shí)現(xiàn)棧的優(yōu)點(diǎn)是:一個(gè)元素值占用一個(gè)存儲(chǔ)空間;它的缺點(diǎn)為:如果初始化申請(qǐng)的存儲(chǔ)空間太大,會(huì)造成空間的浪費(fèi),如果申請(qǐng)的存儲(chǔ)空間太小,后期會(huì)經(jīng)常需要擴(kuò)充存儲(chǔ)空間,擴(kuò)充存儲(chǔ)空間是個(gè)費(fèi)時(shí)的操作,這樣會(huì)造成性能的下降。
采用鏈表實(shí)現(xiàn)棧的優(yōu)點(diǎn)是:使用靈活方便,只有在需要的時(shí)候才會(huì)申請(qǐng)空間。它的缺點(diǎn)為:除了要存儲(chǔ)元素外,還需要額外的存儲(chǔ)空間存儲(chǔ)指針信息。
算法性能分析:
這兩種方法壓棧與彈棧的時(shí)間復(fù)雜度都為O(1)。[考點(diǎn)]如何實(shí)現(xiàn)棧
2.
實(shí)現(xiàn)一個(gè)隊(duì)列的數(shù)據(jù)結(jié)構(gòu),使其具有入隊(duì)列、出隊(duì)列、查看隊(duì)列首尾元素、查看隊(duì)列大小等功能。正確答案:與實(shí)現(xiàn)棧的方法類(lèi)似,隊(duì)列的實(shí)現(xiàn)也有兩種方法,分別為采用數(shù)組來(lái)實(shí)現(xiàn)和采用鏈表來(lái)實(shí)現(xiàn)。下面分別詳細(xì)介紹這兩種方法。
方法一:數(shù)組實(shí)現(xiàn)
下圖給出了一種最簡(jiǎn)單的實(shí)現(xiàn)方式,用front來(lái)記錄隊(duì)列首元素的位置,用rear來(lái)記錄隊(duì)列尾元素往后一個(gè)位置。入隊(duì)列的時(shí)候只需要將待入隊(duì)列的元素放到數(shù)組下標(biāo)為rear的位置,同時(shí)執(zhí)行rear+,出隊(duì)列的時(shí)候只需要執(zhí)行front+即可。
示例代碼如下:
classMyQueue:
def__init__(self):
self.arr=[]
self.front=0#隊(duì)列頭
self.rear=0#隊(duì)列尾
#判斷隊(duì)列是否為空
defisEmpty(self):
returnself.front==self.rear
#返回隊(duì)列的大小
defsize(self):
returnself.rear-self.front
#返回隊(duì)列首元素
defgetFront(self):
ifself.isEmpty():
returnNone
returnself.arr[self.front]
#返回隊(duì)列尾元素
defgetBack(self):
ifself.isEmpty():
returnNone
returnself.arr[self.rear-1]
#刪除隊(duì)列頭元素
defdeQueue(self):
ifself.rear>self.front:
self.front+=1
else:
print"隊(duì)列已經(jīng)為空"
#把新元素加入隊(duì)列尾
defenQueue(self,item):
self.arr.append(item)
self.rear+=1
if__name__=="__main__":
queue=MyQueue()
queue.enQueue(1)
queue.enQueue(2)
print"隊(duì)列頭元素為:"+str(queue.getFront())
print"隊(duì)列尾元素為:"+str(queue.getBack())
print"隊(duì)列大小為:"+str(queue.size())
程序的運(yùn)行結(jié)果為:
隊(duì)列頭元素為:1
隊(duì)列尾元素為:2
隊(duì)列大小為:2
以上這種實(shí)現(xiàn)方法最大的缺點(diǎn)為:出隊(duì)列后數(shù)組前半部分的空間不能被充分地利用,解決這個(gè)問(wèn)題的方法為把數(shù)組看成一個(gè)環(huán)狀的空間(循環(huán)隊(duì)列)。當(dāng)數(shù)組最后一個(gè)位置被占用后,可以從數(shù)組首位置開(kāi)始循環(huán)利用,具體實(shí)現(xiàn)方法可以參考數(shù)據(jù)結(jié)構(gòu)的課本。
方法二:鏈表實(shí)現(xiàn)
采用鏈表實(shí)現(xiàn)隊(duì)列的方法與實(shí)現(xiàn)棧的方法類(lèi)似,分別用兩個(gè)指針指向隊(duì)列的首元素與尾元素,如下圖所示。用pHead來(lái)指向隊(duì)列的首元素,用pEnd來(lái)指向隊(duì)列的尾元素。
在上圖中,剛開(kāi)始隊(duì)列中只有元素1、2和3,當(dāng)新元素4要進(jìn)隊(duì)列的時(shí)候,只需要上圖中(1)和(2)兩步,就可以把新結(jié)點(diǎn)連接到鏈表的尾部,同時(shí)修改pEnd指針指向新增加的結(jié)點(diǎn)。出隊(duì)列的時(shí)候只需要步驟(3),改變pHead指針使其指向pHead.next,此外也需要考慮結(jié)點(diǎn)所占空間釋放的問(wèn)題。在入隊(duì)列與出隊(duì)列的操作中也需要考慮隊(duì)列尾空的時(shí)候的特殊操作,實(shí)現(xiàn)代碼如下所示:
classLNode:
def__new__(self,x):
self.data=x
self.next=None
classMyQueue:
#分配頭結(jié)點(diǎn)
def__init__(self):
self.pHead=None
self.pEnd=None
#判斷隊(duì)列是否為空,如果為空返回true,否則返回false
defempty(self):
ifself.pHead=None:
returnTrue
else:
returnFalse
#獲取棧中元素的個(gè)數(shù)
defsize(self):
size=()
p=self.pHead
whilep!=None:
p=p.next
size+=1
returnsize
#入隊(duì)列:把元素e加到隊(duì)列尾
defenQueue(self,e):
p=LNode()
p.data=e
p.next=None
ifself.pHead==None:
self.pHead=self.pEnd=p
else:
self.pEnd.next=p
selfpEnd=p
#出隊(duì)列,刪除隊(duì)列首元素
defdeQueue(self):
ifself.pHead==None:
print"出隊(duì)列失敗,隊(duì)列已經(jīng)為空"
self.pHead=self.pHead.next
ifself.pHead==None:
self.pEnd=None
#取得隊(duì)列首元素
defgetFront(self):
ifself.pHead==None:
print"獲取隊(duì)列首元素失敗,隊(duì)列已經(jīng)為空"
returnNone
returnself.pHead.data
#取得隊(duì)列尾元素
defgetBack(self):
ifself.pEnd==None:
print"獲取隊(duì)列尾元素失敗,隊(duì)列已經(jīng)為空"
returnNone
returnself.pEnd.data
if__name__="__main__":
queue=MyQueue()
queue.enQueue(1)
queue.enQueue(2)
print"隊(duì)列頭元素為:"+str(queue.getFront())
print"隊(duì)列尾元素為:"+str(queue.getBack())
print"隊(duì)列大小為:"+str(queue.size())
程序的運(yùn)行結(jié)果為:
隊(duì)列頭元素為:1
隊(duì)列尾元素為:2
隊(duì)列大小為:2
顯然用鏈表來(lái)實(shí)現(xiàn)隊(duì)列有更好的靈活性,與數(shù)組的實(shí)現(xiàn)方法相比,它多了用來(lái)存儲(chǔ)結(jié)點(diǎn)關(guān)系的指針空間。此外,也可以用循環(huán)鏈表來(lái)實(shí)現(xiàn)隊(duì)列,這樣只需要一個(gè)指向鏈表最后一個(gè)元素的指針即可,因?yàn)橥ㄟ^(guò)指向鏈表尾元素可以非常容易地找到鏈表的首結(jié)點(diǎn)。[考點(diǎn)]如何實(shí)現(xiàn)隊(duì)列
3.
翻轉(zhuǎn)(也叫顛倒)棧的所有元素,例如輸入棧{1,2,3,4,5},其中,1處在棧頂,翻轉(zhuǎn)之后的棧為{5,4,3,2,1},其中,5處在棧頂。正確答案:最容易想到的辦法是申請(qǐng)一個(gè)額外的隊(duì)列,先把棧中的元素依次出棧放到隊(duì)列里,然后把隊(duì)列里的元素按照出隊(duì)列順序入棧,這樣就可以實(shí)現(xiàn)棧的翻轉(zhuǎn),這種方法的缺點(diǎn)是需要申請(qǐng)額外的空間存儲(chǔ)隊(duì)列,因此,空間復(fù)雜度較高。下面介紹一種空間復(fù)雜度較低的遞歸的方法。
遞歸程序有兩個(gè)關(guān)鍵因素需要注意:遞歸定義和遞歸終止條件。經(jīng)過(guò)分析后,很容易得到該問(wèn)題的遞歸定義和遞歸終止條件。遞歸定義:將當(dāng)前棧的最底元素移到棧頂,其他元素順次下移一位,然后對(duì)不包含棧頂元素的子棧進(jìn)行同樣的操作。終止條件:遞歸下去,直到棧為空。遞歸的調(diào)用過(guò)程如下圖所示:
在上圖中,對(duì)于棧{1,2,3,4,5},進(jìn)行翻轉(zhuǎn)的操作為:首先把棧底元素移動(dòng)到棧頂?shù)玫綏5,1,2,3,4},然后對(duì)不包含棧頂元素的子棧進(jìn)行遞歸調(diào)用(對(duì)子棧元素進(jìn)行翻轉(zhuǎn)),子棧{1,2,3,4}翻轉(zhuǎn)的結(jié)果為{4,3,2,l},因此,最終得到翻轉(zhuǎn)后的棧為{5,4,3,2,1}。
此外,由于棧的后進(jìn)先出的特點(diǎn),使得只能取棧頂?shù)脑?,因此,要把棧底的元素移?dòng)到棧頂也需要遞歸調(diào)用才能完成,主要思路為:把不包含該棧頂元素的子棧的棧底的元素移動(dòng)到子棧的棧頂,然后把棧頂?shù)脑嘏c子棧棧頂?shù)脑?其實(shí)就是與棧頂相鄰的元素)進(jìn)行交換。
為了更容易理解遞歸調(diào)用,可以認(rèn)為在進(jìn)行遞歸調(diào)用的時(shí)候,子棧已經(jīng)把棧底元素移動(dòng)到了棧頂,在上圖中,為了把棧{1,2,3,4,5}的棧底元素5移動(dòng)到棧頂,首先對(duì)子棧{2,3,4,5},進(jìn)行遞歸調(diào)用,調(diào)用的結(jié)果為{5,2,3,4},然后對(duì)子棧頂元素5,與棧頂元素1進(jìn)行交換得到棧{5,1,2,3,4),實(shí)現(xiàn)了把棧底元素移動(dòng)到棧頂。
實(shí)現(xiàn)代碼如下:
#Python中沒(méi)有棧的模塊,所以先新建一個(gè)棧類(lèi)
classStack:
#模擬棧
def__init__(self):
self.items=[]
#判斷棧是否為空
defempty(self):
returnlen(self.items)==0
#返回棧的大小
defsize(self):
returnlen(self.items)
#返回棧頂元素
defpeek(self):
ifnotself.empty():
returnself.items[len(self.items)-1]
else:
returnNone
#彈棧
defpop(self):
iflen(self.items)>0:
returnself.items.pop()
else:
priiit"棧已經(jīng)為空"
returnNone
#壓棧
defpush(self,item):
self.items.append(item)
"""
方法功能:把棧底元素移動(dòng)到棧頂
參數(shù):s棧的引用
"""
defmoveBottomToTop(s):
ifs.empty():
return
top1=s.peek()
s.pop()#彈出棧項(xiàng)元素
ifnots.empty():
#遞歸處理不包含棧頂元素的子棧
moveBottomToTop(s)
top2=s.peek()
s.pop()
#交換棧頂元素與予棧棧頂元素
s.push(top1)
s.push(top2)
else:
s.push(top1)
defreverse_stack(s):
ifs.empty():
return
#把棧底元素移動(dòng)到棧頂
moveBottomToTop(s)
top=s.peek()
s.pop()
#遞歸處理子棧
reverse_stack(s)
s.push(top)
if__name__=="__main__":
s=Stack()
s.push(5)
s.push(4)
s.push(3)
s.push(2)
s.push(1)
reverse_stack(s)
print"翻轉(zhuǎn)后出棧順序?yàn)?",
whilenots.empty():
prints.peek(),
s.pop()
程序的運(yùn)行結(jié)果為:
翻轉(zhuǎn)后出棧順序?yàn)椋?4321
算法性能分析:
把棧底元素移動(dòng)到棧頂操作的時(shí)間復(fù)雜度為O(N),在翻轉(zhuǎn)操作中對(duì)每個(gè)子棧都進(jìn)行了把棧底元素移動(dòng)到棧頂?shù)牟僮鳎虼?,翻轉(zhuǎn)算法的時(shí)間復(fù)雜度為O(N2)。[考點(diǎn)]如何翻轉(zhuǎn)棧的所有元素
4.
輸入兩個(gè)整數(shù)序列,其中一個(gè)序列表示棧的push(入)順序,判斷另一個(gè)序列有沒(méi)有可能是對(duì)應(yīng)的pop(出)順序。正確答案:假如輸入的push序列是1、2、3、4、5,那么3、2、5、4、1就有可能是一個(gè)pop序列,但5、3、4、1、2就不可能是它的一個(gè)pop序列。
主要思路是使用一個(gè)棧來(lái)模擬入棧順序,具體步驟如下:
(1)把push序列依次入棧,直到棧頂元素等于pop序列的第一個(gè)元素,然后棧頂元素出棧,pop序列移動(dòng)到第二個(gè)元素;
(2)如果棧頂繼續(xù)等于pop序列現(xiàn)在的元素,則繼續(xù)出棧并pop后移;否則對(duì)push序列繼續(xù)入棧。
(3)如果push序列已經(jīng)全部入棧,但是pop序列未全部遍歷,而且棧頂元素不等于當(dāng)前pop元素,那么這個(gè)序列不是一個(gè)可能的出棧序列。如果棧為空,而且pop序列也全部被遍歷過(guò),則說(shuō)明這是一個(gè)可能的pop序列。下圖給出一個(gè)合理的pop序列的判斷過(guò)程。
在上圖中,(1)~(3)三步,由于棧頂元素不等于pop序列第一個(gè)元素3,因此,1,2,3依次入棧,當(dāng)3入棧后,棧頂元素等于pop序列的第一個(gè)元素3,因此,第(4)步執(zhí)行3出棧,接下來(lái)指向第二個(gè)pop序列2,且棧頂元素等于pop序列的當(dāng)前元素,因此,第(5)步執(zhí)行2出棧;接著由于棧頂元素4不等于當(dāng)前pop序列5,因此,接下來(lái)(6)和(7)兩步分別執(zhí)行4和5入棧;接著由于棧頂元素5等于pop序列的當(dāng)前值,因此,第(8)步執(zhí)行5出棧,接下來(lái)(9)和(10)兩步棧項(xiàng)元素都等于當(dāng)前pop序列的元素,因此,都執(zhí)行出棧操作。最后由于棧為空,同時(shí)pop序列都完成了遍歷,因此,{3,2,5,4,1}是一個(gè)合理的出棧序列。
實(shí)現(xiàn)代碼如下:
classStack:
#模擬棧
def__init__(self):
selfitems=[]
#判斷棧是否為空
defempty(self):
returnlen(self.items)==0
#返回棧的大小
defsize(self):
returnlen(self.items)
#返回棧頂元素
defpeek(self):
ifnotself.empty():
returnself.items[len(self.items)-1]
else:
returnNone
#彈棧
defpop(self):
iflen(self.items)>0:
returnself.items.pop()
else:
print"棧已經(jīng)為空"
returnNone
#壓棧
defpush(self,item):
self.items.append(item)
defisPopSerial(push,pop):
ifpush==Noneorpop==None:
returnFalse
pushLen=len(push)
popLen=len(pop)
ifpushLen!=popLen:
returnFalse
pushIndex=0
popIndex=0
stack=Stack()
whilepushIndex<pushLen:
#把push序列依次入棧,直到棧頂元素等于pop序列的第一個(gè)元素
stack.push(push[pushIndex])
pushIndex+=1
#棧頂元素出棧,pop序列移動(dòng)到下一個(gè)元素
while(notstack.empty())andstack.peek()==pop[popIndex]:
stack.pop()
popIndex+=1
#棧為空,且pop序列中元素都被遍歷過(guò)
returnstack.empty()andpopIndex==popLen
if__name__=="__main__":
push="12345"
pop="32541"
ifisPopSerial(push,pop):
printpop+"是"+push+"的一個(gè)pop序列"
else:
printpop+"不是"+push+"的一個(gè)pop序列"
程序的運(yùn)行結(jié)果為:
32541是12345的一個(gè)pop序列
算法性能分析:
這種方法在處理一個(gè)合理的pop序列的時(shí)候需要操作的次數(shù)最多,即把push序列進(jìn)行一次壓棧和出棧操作,操作次數(shù)為2N,因此,時(shí)間復(fù)雜度為O(N),此外,這種方法使用了額外的??臻g,因此,空間復(fù)雜度為O(N)。[考點(diǎn)]如何根據(jù)入棧序列判斷可能的出棧序列
5.
如何用O(1)的時(shí)間復(fù)雜度求棧中最小元素正確答案:由于棧具有后進(jìn)先出的特點(diǎn),因此,push和pop只需要對(duì)棧頂元素進(jìn)行操作。如果使用上述的實(shí)現(xiàn)方式,只能訪(fǎng)問(wèn)到棧頂?shù)脑?,無(wú)法得到棧中最小的元素。當(dāng)然,可以用另外一個(gè)變量來(lái)記錄棧底的位置,通過(guò)遍歷棧中所有的元素找出最小值,但是這種方法的時(shí)間復(fù)雜度為O(N),那么如何才能用O(1)的時(shí)間復(fù)雜度求出棧中最小的元素呢?
在算法設(shè)計(jì)中,經(jīng)常會(huì)采用空間換取時(shí)間的方式來(lái)提高時(shí)間復(fù)雜度,也就是說(shuō),采用額外的存儲(chǔ)空間來(lái)降低操作的時(shí)間復(fù)雜度。具體而言,在實(shí)現(xiàn)的時(shí)候使用兩個(gè)棧結(jié)構(gòu),一個(gè)棧用來(lái)存儲(chǔ)數(shù)據(jù),另外一個(gè)棧用來(lái)存儲(chǔ)棧的最小元素。實(shí)現(xiàn)思路如下:如果當(dāng)前入棧的元素比原來(lái)?xiàng)V械淖钚≈颠€小,則把這個(gè)值壓入保存最小元素的棧中;在出棧的時(shí)候,如果當(dāng)前出棧的元素恰好為當(dāng)前棧中的最小值,保存最小值的棧頂元素也出棧,使得當(dāng)前最小值變?yōu)楫?dāng)前最小值入棧之前的那個(gè)最小值。為了簡(jiǎn)單起見(jiàn),可以在棧中保存int類(lèi)型。
實(shí)現(xiàn)代碼如下:
#模擬棧
classStack:
def__init__(self):
self.items=[]
#判斷棧是否為空
defempty(self):
returnlen(self.items)==0
#返回棧的大小
defsize(self):
returnlen(setf.items)
#返回棧頂元素
defpeek(self):
ifnotself.empty():
returnself.items[len(self.items)-1]
else:
returnNone
#彈棧
defpop(self):
iflen(self.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 麋鹿課件完美教學(xué)課件
- 消防應(yīng)急體系
- 3.1.1 鐵及其性質(zhì) 課件高一上學(xué)期化學(xué)(人教版2019必修第一冊(cè))
- 外匯期貨課件教學(xué)課件
- 池塘邊的小鴨教案反思
- 過(guò)生日說(shuō)課稿
- 2025商場(chǎng)地產(chǎn)蛇年新春國(guó)潮年貨節(jié)(蛇年行大集主題)活動(dòng)策劃方案-47P
- 智慧人工智能:開(kāi)拓人工智能創(chuàng)新應(yīng)用的方案
- 新能源汽車(chē)二手房交易合同模板
- 眼鏡制造合作合同
- 2024年山東省公務(wù)員考試《行測(cè)》真題及答案解析
- JGJ/T235-2011建筑外墻防水工程技術(shù)規(guī)程
- (正式版)HG∕T 21633-2024 玻璃鋼管和管件選用規(guī)定
- 2024年網(wǎng)上大學(xué)智能云服務(wù)交付工程師認(rèn)證考試題庫(kù)800題(含答案)
- 農(nóng)產(chǎn)品電子商務(wù)智慧樹(shù)知到期末考試答案章節(jié)答案2024年浙江農(nóng)林大學(xué)
- MOOC 電工學(xué)(電氣工程學(xué)概論)-天津大學(xué) 中國(guó)大學(xué)慕課答案
- 特種設(shè)備使用單位日管控、周排查、月調(diào)度示范表
- 初中語(yǔ)文測(cè)試質(zhì)量分析表(模板)
- 低壓配電室巡檢記錄表
- 華師版八年級(jí)上冊(cè)數(shù)學(xué) 【說(shuō)課稿】13.2.4 邊邊邊.doc
- 機(jī)械課程設(shè)計(jì)ZDD(答辯高分通過(guò))
評(píng)論
0/150
提交評(píng)論