一些資料結構練習題

2021-08-22 04:58:03 字數 1458 閱讀 6617

今天來做一些題目來鞏固一下所學的知識。

1.刪除鍊錶中重複的節點。

//刪除鍊錶中重複的節點。

slistnode* deleteduplication(slistnode* phead)

p2=p2->pnext; //先讓快指標先走一步。

while(p2!=null)

else

}return m; //返回頭指標即可。

}

2.按照要求重新排序鍊錶。

//將鍊錶按照0->n->1->n-1->...的順序整理。

//如:原鍊錶:1 2 3 4 5 6 7,轉換後:1 7 2 6 3 5 4.

slistnode *rsort(slistnode *pfirst)

while(p!=null) //迴圈得到鍊錶長度。

n=n/2; //表示還需進行插入的次數。

p=pfirst; //將p重新指向頭結點。

while(n>0) //在計算的次數內進行操作。

slistinsert(&p,a,q->data); //按照節點插入。

p=a;

q=q->pnext;

n--;

} p->pnext=null; //最後將鍊錶後面的值去掉。

return m; //返回頭結點。

}

3.判否是平衡二叉樹。

//求樹的深度。

int treeheight(treenode *proot)

left=treeheight(proot->pleft);

right=treeheight(proot->pright);

return (left>right ? left+1 : right+1);

}//判斷是否是平衡二叉樹。

int treeisbalance(treenode *proot)

left=treeisbalance(proot->pleft); //判斷左子樹是否平衡。

if(left==0)

right=treeisbalance(proot->pright); //判斷右子樹是否平衡。

if(right==0)

x=treeheight(proot->pleft); //求左右子樹的深度。

y=treeheight(proot->pright);

if(x-y>=-1 && x-y<=1) //深度之間的差值不超過1.

return 0;

}

以上就是今天的**練習。

資料結構練習題

設pa,pb分別指向兩個帶頭結點的有序 從小到大 單鏈表。仔細閱讀如下的程式,並回答問題 1 程式的功能 2 s1,s2中值的含義 3 pa,pb中值的含義。include include typedef struct list list void exam list pa,list pb else...

js一些練習題

1 如果陣列中存在 item,則返回元素在陣列中的位置,否則返回 1 function indexof arr,item else else if len 1 else 常規迴圈 function sum arr return s 函式式程式設計 map reduce function sum ar...

資料結構 緒論 練習題

a.找出資料結構的合理性 b.研究演算法的輸入 輸出關係 c.分析演算法的效率以求改進 d.分析演算法的易讀性 答案 c 什麼是資訊?廣義地講,資訊就是訊息。宇宙三要素 物質 能量 資訊 之一。它是現實世界各種事物在人們頭腦中的反映。此外,人們通過科學儀器能夠認識到的也是資訊。資訊的特徵為 可識別 ...