例2-1 利用兩個(gè)線性表LA和LB分別表示兩個(gè)集合A和B,現(xiàn)要求一個(gè)新的集合A=A∪B。
void union(List &La,List Lb) {
La-len=listlength(La);
Lb-len=listlength(Lb);
for(I=1;Igetelem(lb,I,e);
if(!locateelem(la,e,equal))listinsert(la,++la-en,e)
}
}
算法2.2
例2-2 巳知線性表LA和線性表LB中的數(shù)據(jù)元素按值非遞減有序排列,現(xiàn)要求將LA和LB歸并為一個(gè)新的線性表LC,且LC中的元素仍按值非遞減有序排列。
此問題的算法如下:
void mergelist(list la,list lb,list &lc)
initlist(lc);
I=j=1;k=0;
la-len=listlength(la);
lb-len=listlength(lb);
while((I
getelem(la,I,ai);getelem(lb,j,bj);
if(aielse{listinsert(lc,++k,bj);++j;}
}
while(Igetelem((la,I++,ai);listinsert(lc,++k,ai);
}
while(jgetelem((lb,j++,bj);listinsert(lc,++k,bi);
}
}
順序棧的類型定義如下:
# define StackSize 100
typedef char datatype;
typedef struct {
datatype data[stacksize];
int top;
}seqstack;
設(shè)S是SeqStack類型的指針變量。若棧底位置在向量的低端,即s–>data[0]是棧底元素,那么棧頂指針s–>top是正向增加的,即進(jìn)棧時(shí)需將s–>top加1,退棧時(shí)需將s–>top 減1。因此,s–>toptop =stacksize-1表示棧滿。當(dāng)棧滿時(shí)再做進(jìn)棧運(yùn)算必定產(chǎn)生空間溢出,簡稱“上溢”;當(dāng)??諘r(shí)再做退棧運(yùn)算也將產(chǎn)生溢出,簡稱“下溢”。上溢是一種出錯(cuò)狀態(tài),應(yīng)該設(shè)法避免之;下溢則可能是正?,F(xiàn)象,因?yàn)闂T诔绦蛑惺褂脮r(shí),其初態(tài)或終態(tài)都是空棧,所以下溢常常用來作為程序控制轉(zhuǎn)移的條件。
3、判斷棧滿
int stackfull(seqstack *s)
{
return(s–>top==stacksize-1);
}
4、進(jìn)棧
void push(seqstack *s,datatype x)
{
if (stackfull(s))
error(“stack overflow”);
s–>data[++s–>top]=x;
}
1、置空棧
void initstack(seqstack *s)
{
s–>top=-1;
}
2、判斷???/p>
int stackempty(seqstack *s)
{
return(s–>top==-1);
}
5、退棧
datatype pop(seqstack *s)
{
if(stackempty(s))
error(“stack underflow”);
x=s–>data[top];
s–>top--;
return(x)
//return(s–>data[s–>top--]);
}
6、取棧頂元素
Datatype stacktop(seqstack *s)
{
if(stackempty(s)
error(“stack is enpty”);
return s–>data[s–>top];
}
很顯然你首先需要會(huì)一門編程語言。數(shù)據(jù)結(jié)構(gòu)可以在不同的語言下實(shí)現(xiàn),你可以看常用的數(shù)據(jù)結(jié)構(gòu)教材,有的基于C,有的基于JAVA,所以在學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法之前,先學(xué)會(huì)一門語言是很有必要的事情。
因?yàn)閿?shù)據(jù)結(jié)構(gòu)書中很多內(nèi)容用到的都是C語言偽代碼,如果不懂C語言的話應(yīng)該是看不懂的。多了解一下點(diǎn)C語言、數(shù)據(jù)類型、循環(huán)分支、結(jié)構(gòu)體、指針等基本知識。一般來說,學(xué)習(xí)完c語言之后,效率會(huì)比較高點(diǎn),另外數(shù)學(xué)好的話對理解算法是有好處的,動(dòng)態(tài)規(guī)劃啊,決策樹啊之類的,具體的知識可以去小碼哥李明杰了解。
因?yàn)閿?shù)據(jù)結(jié)構(gòu)是需要編程實(shí)現(xiàn)的。在內(nèi)容上,數(shù)據(jù)結(jié)構(gòu)很大一部分是獨(dú)立的,但也有一部分與其它課程有關(guān),比如離散數(shù)學(xué),線性代數(shù)等,不過也沒多大影響,書上都帶有詳細(xì)介紹。數(shù)據(jù)結(jié)構(gòu)理論性很強(qiáng),需要多動(dòng)手寫代碼,理解好原理,而且會(huì)編程實(shí)現(xiàn),這兩方面都很重要。
有時(shí)間的話肯定是深入學(xué)習(xí)一下比較好,不過也不要有壓力,大學(xué)的東西都是“平易近人”的,只要你認(rèn)真學(xué)肯定是沒問題的,頂多就是比基礎(chǔ)好的人多花點(diǎn)時(shí)間。
數(shù)據(jù)結(jié)構(gòu)的話跟C語言還有點(diǎn)關(guān)系,但是大部分人對數(shù)據(jù)結(jié)構(gòu)都不會(huì)很了解,所以基本可以認(rèn)為你們處于同一起跑線。
算法的話重要的是你的邏輯思維能力和數(shù)學(xué)功底,C語言只是實(shí)現(xiàn)算法的工具,只要算法理解透了,你可以用C++,可以用Java,甚至腳本語言Python,如果C語言基礎(chǔ)好,只會(huì)使你實(shí)現(xiàn)算法的時(shí)候更加順手,但算法的實(shí)現(xiàn)本不是算法學(xué)習(xí)的精髓,算法本身及邏輯能力的提高才是你需要重點(diǎn)關(guān)注的。
個(gè)人認(rèn)為這已經(jīng)是一本非常不錯(cuò)的教材了,看來你是C/C++的學(xué)習(xí)不是很深入,要注重程序編寫的規(guī)范化,克服隨意的缺點(diǎn)。
(1)非常重要。 這幾乎就是本門課程的關(guān)鍵所在,也是實(shí)際解決問題的基本方法 (2)幾乎和學(xué)沒學(xué)過離散數(shù)學(xué)無關(guān),而在于個(gè)人的邏輯思維能力、抽象思維能力(關(guān)鍵)和空間想像能力,而不是什么小聰明和歪門邪道,對解決問題不能有先入為主的直觀解決想法,盡量閱讀算法,領(lǐng)會(huì)精神,最好實(shí)際上機(jī)實(shí)現(xiàn),對學(xué)習(xí)會(huì)有很大幫助 (3)算法基于C++語言,當(dāng)然實(shí)際上機(jī)還有必要改進(jìn)和豐富,但是基本已是最優(yōu)化算法了,//后面是C++的注釋方式,要不要隨你便,書中只是為了便于教學(xué)理解 (4)算法著眼于解決過程的描述,是一種利用語言進(jìn)行代替?zhèn)未a描述問題的方式,實(shí)際上機(jī)再依據(jù)需要補(bǔ)充定義變量 (5)Elemtype是最基本的數(shù)據(jù)類型,為了算法的通用這么使用,實(shí)際中依據(jù)需要進(jìn)行,比如應(yīng)用為 int,則應(yīng)該補(bǔ)充 typedef int ElemType; 將其定義為 int 類型,這個(gè)參看 typedef 語句的用途 SElemType在書中是棧節(jié)點(diǎn)數(shù)據(jù)類型,也是依據(jù)需要再自己定義,類似的書中都只是通用性描述 相應(yīng)教材還有一本習(xí)題和解答,可以去找找看 這本教材只是基本知識入門級別,后續(xù)可以根據(jù)自己的情況選擇深入學(xué)習(xí)的資料 。
1. 數(shù)據(jù)結(jié)構(gòu)中最基本的,棧(先進(jìn)后出),隊(duì)列(先進(jìn)先出),二叉樹,要知道二叉樹的遍歷,這個(gè)每年都考。
2.數(shù)據(jù)庫中的基礎(chǔ)知識,考一兩道,主要是關(guān)系數(shù)據(jù)庫的概念,什么m對n,DBMS之類的。
3.軟件設(shè)計(jì)里的基礎(chǔ)知識,什么高耦合什么的,具體什么忘了,你查查。
4.記得還考那些http,ftp,郵件協(xié)議SMTP、POP3這些,好像每年都有著一道,你看看,很簡單,幾下就好了。
目前能想到的就這些了,希望對你有幫助。
哦,填空題前5到跟選擇題的前10道考的是一樣的知識點(diǎn),所以上面的這些知識點(diǎn)對前5到填空題同樣有用~~~~~~~~~~~~~
聲明:本網(wǎng)站尊重并保護(hù)知識產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁面生成時(shí)間:2.647秒