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