太原理工大學資料結構實驗報告

2021-10-13 12:50:30 字數 3149 閱讀 4920

1.設有 n 個人圍坐在乙個圓桌周圍,現從第 s 個人開始報數,數到第 m 的人出列,然後從出列的下乙個人重新開始報數,數到 m 的人又出列,如此重複,直到所有的人全部出列為止。josephus 問題是:對於任意給定的 n,m,s,求出按出列次序得到的 n 個人員的順序表。

#include

#include

typedef

struct nodenode,

*nodelink;

void

make

(nodelink head,

int n)

}void

dequeue

(nodelink head,nodelink line,

int n,

int m,

int s)

//迴圈遍歷鍊錶,將對應位置上的鍊錶存入新煉表中

r=line;

//line為 新鍊錶的頭指標

do q->next=p->next;

//將q和p都指向要出隊的元素

p->next=

null

;//將所找元素設為新鍊錶的最後乙個元素

r->next=p;

//r始終位於新鍊錶的末尾,將新元素接在鍊錶後面

r=r->next;

p=q->next;

//將p指向下乙個元素,開始新一輪的出隊

}while

(p!=p->next)

;//當元素只剩下乙個時,終止迴圈

r->next=p;

r->next->next=

null;}

void

write

(nodelink line,

int n)

intmain()

2.編寫遞迴演算法,在二叉樹中求位於先序序列中第 k 個位置的結點。

#include

#include

#include

typedef

struct bitnodebitnode,

*bitree;

//尋找第k個元素

bool find_k

(bitree b1,

int*i,

int k)if(

find_k

(b1->lchild,i,k)

||find_k

(b1->rchild,i,k)

)return true;

return false;

}// create binary tree

bitree createbitree

(bitree t)

return t;

}int

main()

else

return0;

}

3.採用鄰接表儲存結構,編寫乙個求無向圖的連通分量個數的演算法。

#include

#include

int n;

struct vnode

;struct arcnode

;void

dfs(

struct arcnode*v,

struct arcnode*w)

l=l->next;}}

intmain()

p=(struct arcnode*

)malloc

(n*sizeof

(struct arcnode));

for(i=

0;i)else}}

i=0;

while

(p[i]

.mark==0)

}printf

("此圖的連通分量個數為:%d\n"

,num)

;return0;

}

4.編寫程式實現下面運算:在二叉排序樹中查詢關鍵字為 key 的記錄。

#include

#include

#define endkey 0

typedef

int keytype;

typedef

struct node

bstnode,

*bstree;

void

insertbst

(bstree *bst, keytype key)

/*若在二叉排序樹中不存在關鍵字等於key的元素,插入該元素*/

else

if(key <

(*bst)

->key)

insertbst(&

((*bst)

->lchild)

, key)

;/*將s插入左子樹*/

else

if(key >

(*bst)

->key)

insertbst(&

((*bst)

->rchild)

, key)

;/*將s插入右子樹*/

}void

createbst

(bstree *bst)

/*從鍵盤輸入元素的值,建立相應的二叉排序樹*/

}void

preorder

(bstree root)

/*中序遍歷二叉樹, root為指向二叉樹根結點的指標*/}/*

bstree searchbst(bstree bst, keytype key)

/ *在根指標bst所指二叉排序樹中,遞迴查詢某關鍵字等於key的元素,若查詢成功,返回指向該元素結點指標,否則返回空指標* /

*/bstree searchbst

(bstree bst, keytype key)

/*在根指標bst所指二叉排序樹bst上,查詢關鍵字等於key的結點,若查詢成功,返回指向該元素結點指標,否則返回空指標*/

return

null

;/*查詢失敗*/

}/*searchbst*/

intmain()

歡迎報考太原理工大學

太原理工大學作為百年老校,前身是與北京大學堂齊名的山西大學堂。太原理工大學成立於1902年,是一所 211 學校,同時也是時下的雙一流大學。學校坐擁兩名兩院院士,師資力量雄厚,理工科是本校的強項,但是同時也步伐文史類的專業。同時太原理工大學2019年在校友會中排名中國第78名。太原理工大學在山西叫做...

太原理工大學教務處

太原理工大學教務處 太原理工大學教務處最新訊息 教學服務 迎新報到系統 學生綜合查詢系統 學生成績錄入系統 校歷教師辦事指南 學生辦事指南 網路課程 處長信箱 舉報信箱 太原理工大學首頁 太原理工大學學生處 教學研究 關於申報2008年度太原理工大學大學生創新性實驗計畫的通知 2007 09 10 ...

太原理工大學ACM隊簡介(2018版)

在這裡,你將有機會與全國乃至世界各地的選手切磋技藝。acm的全稱是acm icpc association for computing machinery international collegiate programming contest 即國際大學生程式設計競賽。是由美國計算機協會 acm ...