今天來做一些題目來鞏固一下所學的知識。
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 什麼是資訊?廣義地講,資訊就是訊息。宇宙三要素 物質 能量 資訊 之一。它是現實世界各種事物在人們頭腦中的反映。此外,人們通過科學儀器能夠認識到的也是資訊。資訊的特徵為 可識別 ...