問題: 資料結構問題
資料結構在軟體基礎中地位如何?演算法要求掌握到什麼程度?
回答:(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.的裝飾公司說牆面走線不能開橫槽,只能開豎槽,有此說法嗎?答 有,最好先看一下是...