資料結構問題解答

2021-03-03 23:38:44 字數 3376 閱讀 6427

問題: 資料結構問題

資料結構在軟體基礎中地位如何?演算法要求掌握到什麼程度?

回答:(1)資料結構和其它三部分內容構成《軟體基礎》的整體,重要性是一樣的。從內容的難易程式分析,資料結構的內容相對較難。

(2)演算法是求解問題的描述。要求能讀懂書中的演算法,一些典型演算法要求自己能寫出來。例如,線形結構的一些演算法,二叉樹的一些演算法。

問題:資料結構理論如何實現?

我們學了資料結構,但一些演算法都只是理論,沒辦法實現,線性表,棧,串,隊,我們不知道他能否實現,請告訴我們實現的源**!!!

回答:源**如下:

(1)// 1/3

//*chapter :2 (2_2) *

//*program :鏈式結構的線性表 *

//*content :生成,插入,刪除,定位,查詢 *

#include

#include

#include

#include

#define len sizeof(lnode) //定義len為乙個節點的長度

enum bool; //定義bool型

typedef struct node

lnode,*linklist;

void creatlist(linklist &,int); //生成乙個單鏈表

bool listinsert(linklist &,int,char); //在單鏈表中插入乙個元素

bool listdelete(linklist &,int,char &); //在單鏈表中刪除乙個元素

bool listfind_keyword(linklist,char,int &); //按關鍵字查詢乙個元素

bool listfind_order(linklist,char &,int); //按序號查詢乙個元素

void listprint(linklist); //顯示單鏈表所有元素

void main()

case '3':printf("請輸入要刪除的元素所在位置:");

scanf("%d",&loc); //輸入要刪除的節點的位置

temp=listdelete(l,loc,ch); //刪除

if(temp==false) printf("刪除失敗!\n"); //刪除失敗

else printf("成功刪除了乙個元素:%c\n",ch); //刪除成功,顯示該元素

listprint(l);

break;

case '4':if(l->next==null) //鍊錶為空

printf("鍊錶為空!\n");

else

break;

case '5':if(l->next==null) //鍊錶為空

printf("鍊錶為空!\n");

else

break;

default:flag=0;printf("程式結束,按任意鍵退出!\n");

}}getch();}

(3)//3/3

void creatlist(linklist &v,int n)

}bool listinsert(linklist &v,int i,char e)

//查詢第i-1個元素的位置

if(!p||j>i-1) return false; //沒有找到

s=(linklist)malloc(len); //生成乙個新結點

s->data=e;

s->next=p->next; //將新結點插入到單鏈表中

p->next=s;

return true;}

bool listdelete(linklist &v,int i,char &e)

if(!(p->next)||j>i-1) return false; //查詢失敗

q=p->next;p->next=q->next; //刪除該元素

e=q->data; //e取得該元素值

free(q); //釋放該元素空間

return true;}

bool listfind_keyword(linklist v,char e,int &i)

//找到或到鍊錶尾為止

if(p->data!=e) //該元素在鍊錶中不存在

return false;

else return true;}

bool listfind_order(linklist v,char &e,int i)

if(j!=i) return false; //查詢失敗

else }

void listprint(linklist v)

printf("\n");}

(二)用asp讀取access資料庫樣例的表結構

欄位1名稱:帳號

型別:文字

長度 50

欄位2名稱:密碼

型別:文字

長度 50

樣本**:

帳號密碼

admin1 a1

admin2 b2

admin3 c3

問題:動態鍊錶和靜態鍊錶是什麼? 回答

有些高階語言中沒有「指標」資料型別,只能用陣列來模擬線性鍊錶的結構,陣列元素中的指標「域」存放的不是元素在內在中的真實位址,而是在陣列中的位置。這樣的鍊錶稱為靜態鍊錶。而我們一般的有「malloc」「new」等函式分配空間建立的鍊錶是動態鍊錶。

問題:什麼是堆?

回答:堆是滿足下列性質的數列:r(i)>=r(2i),r(i)>=r(2i+1)或r(i)<=r(2i),r(i)<=r(2i+1)若將此數列看成是一棵完全二叉樹,則堆或是空樹或是滿足下列特性的完全二叉樹:其左、右子樹分別是堆,並且當左/右子樹不空時,根結點的值小於(或大於)左/右子樹根結點的值。

由此,若上述數列是堆,則r1必是數列中的最小值或最大值,分別稱作小頂堆或大頂堆。

問題:怎樣確定二維陣列元素的存放位置?

設有乙個二維陣列a[m][n],假設a[0][0]存放位置在644(10),a[2][2]存放位置在676(10),每個元素佔乙個空間,問:a[3][3](10)存放在什麼位置?腳注(10)表示用10進製表示。

回答設陣列元素a[i][j]存放在起始位址為loc ( i, j ) 的儲存單元中。

∵ loc(2,2)=loc(0,0)+2*n+2=644+2*n+2=676.

∴ n=(676-2-644)/2=15

∴ loc(3,3)=loc(0,0)+3*15+3=644+45+3=692.

問題:如何查詢單鏈表中資料元素的位址?

試編寫乙個演算法,在帶表頭結點的單鏈表中尋找第i個結點。若找到,則函式返回第i個結點的位址;若找不到,則函式返回0。

回答:template

listnode * list :: getanode ( int i )

return p;}

資料結構問題解答題練習 答案

棧1 若乙個棧中有5個元素,另乙個棧中有4個元素,則它們出棧的方法有種。答案 c 9,5 126 2 如圖,有乙個無窮大的棧s,在棧的右邊排列著1,2,3,4,5共五個車廂,其中每個車廂可以向左行走,也可以進入棧s讓後面的車廂通過,現在已知第乙個到達出口的是3號車廂,請寫出所有可能的到達出口的車廂排...

複習資料結構習題解答

1 空格串是由空格組成的串,空串是不含任何字元的串,因此空格串和空串不是乙個概念。2 從整體上看,資料在儲存器內有兩種存放的方式 一是集中存放在乙個連續的記憶體儲存區中 一是利用儲存器中的零星區域,分散地存放在記憶體的各個地方。3 如果一棵滿二叉樹的深度為6,那麼它共有 63 個結點,有 32 個葉...

裝修問題解答

1.家庭綜合佈線 弱電 開槽是在地面還是在牆上開?或者都行?答 根據您現場的情況,比如地面貼地磚或鋪實木地板可採用在地面走線。如果是複合地板最好走牆面,因為複合地板下沒有龍骨,無法預留穿線管高度。牆面走線一般造價偏高。2.的裝飾公司說牆面走線不能開橫槽,只能開豎槽,有此說法嗎?答 有,最好先看一下是...