導航:首頁 > 源碼編譯 > 演算法的課程設計題目

演算法的課程設計題目

發布時間:2024-07-18 11:55:41

㈠ 求一個數據結構的經典演算法!!課程設計啊,想了好久都沒有想出來。

另外清數舉一個例子,前序abecfg和中序beafcg。
前序先遍歷根,故a為根,所以中序的be和fcg分別為左子樹和右子樹,前序對應是be和cfg,然後對左右子樹用遞歸,很簡單的:
struct Btree *tree(char *front,char *middle, int length)
//middle為中序遍歷的字元串,front為前序遍歷的字元串。
//length為字元串長度。
struct Btree *root,
//root為待建樹的根結點
{
int position;
if(length>0)
{
root=(struct Btree *)malloc(sizeof(Btree));
root->data=front[0];//middle[0]是根
if(length!=1){//如果等於1,則已經完成該子樹構建,否則需要遞歸構建左和右子樹。
position=find(middle,front[0];//找答森首到根在前序遍歷中的位置,字元串第一個字元從零開始計算。
root->lchild=tree(front+1,middle,position);//中序遍歷的左子樹在根後面,而前序遍歷則在根前,就是最前面,這個遞歸就可以構造左子樹。注意春顫子樹對應的字元串長度縮小了。
root->rchild=tree(front+position,middle+positon+1,length-position-1);//構造右子樹。
}
else
{
root->lchild=null;
root->rchild=null;
}//已完成構建,設置左右子樹為空
else
root=null;//長度為零,說明該子樹不存在,所以直接設置為空。
return(null);
}

㈡ 數據結構與演算法課程設計——集合運算

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
struct set{
int coef;
struct set *next;
};

void createlist_p(struct set *&p,int n)
{
int i;
struct set *L;
p=(struct set *)malloc(sizeof(set));
p->next=NULL;
for(i=n;i>0;i--)
{
L=(struct set *)malloc(sizeof(set));
printf("請輸入該集合中第%d個整數元素:",n-i+1);
scanf("%d",&L->coef);
L->next=p->next;
p->next=L;
}
}//生成新鏈表用於存放兩集合中的元素
void printlist_p(struct set *&p)
{
struct set *L;
int i;
L=p->next;
if(!L) printf("該表為空!\n");
while(L!=NULL)
{
printf("%d ",L->coef);
L=L->next;
i++;
}
printf("\n");
}//列印輸入的兩集合中的元素
void Addset(struct set *&p,struct set *&q,struct set *&r)
{
struct set *k,*m,*n;
r=(struct set *)malloc(sizeof(set));
r->next=NULL;
k=p->next;
for(;k;)
{
m=(struct set *)malloc(sizeof(set));
m->next=r->next;
r->next=m;
m->coef=k->coef;
k=k->next;
}//把第一個集合中的元素放在新集合中
k=q->next;
m=(struct set *)malloc(sizeof(set));
m->next=r->next;
r->next=m;
m->coef=k->coef;
k=k->next;
for(;k;)
{
for(n=r->next;(k->coef!=n->coef)&&n->next;){
n=n->next;
}//與新集合中的元素比較
if((k->coef!=n->coef)&&!(n->next)){
m=(struct set *)malloc(sizeof(set));
m->next=r->next;
r->next=m;
m->coef=k->coef;
}
k=k->next;
}//對第二個集合中的元素進行分析

}//求A∪B
void Subset(struct set *&p,struct set *&q,struct set *&r){
struct set *k,*m,*n;
r=(struct set *)malloc(sizeof(set));
r->next=NULL;
n=q->next;
for(;n;){
m=p->next;
for(;(m->coef!=n->coef)&&m->next;){
m=m->next;
}
if(m->coef==n->coef) {
k=(struct set *)malloc(sizeof(set));
k->next=r->next;
r->next=k;
k->coef=m->coef;
}
n=n->next;
}

}//求A∩B
void Intset(struct set *&p,struct set *&q,struct set *&r){
struct set *k,*m,*n;
r=(struct set *)malloc(sizeof(set));
r->next=NULL;
m=p->next;
for(;m;){
n=q->next;
for(;(m->coef!=n->coef)&&n->next;){
n=n->next;
}
if(!n->next&&(m->coef!=n->coef)) {
k=(struct set *)malloc(sizeof(set));
k->next=r->next;
r->next=k;
k->coef=m->coef;
}
m=m->next;
}
}//求A-B
void bangzhu(){
printf("\n\t\t\t***********************************");
printf("\n\t\t\t* 求集合的交並差 *");
printf("\n\t\t\t*********************************\n");
}
void main()
{
struct set *p,*q,*r;
int m,n,node;
bangzhu();

for(;;)
{
do{
printf("請輸入您要選擇操作的代碼:\n");
printf("1:求兩集合的並A∪B\n");
printf("2:求兩集合的交A∩B\n");
printf("3:求兩集合的差A-B\n");
printf("0:退出該程序\n");
scanf("%d",&node);
} while(node<0||node>3);

if(node==0) exit(1);
printf("\t\t\t/*請輸入集合A中元素的個數:*/\n");
scanf("%d",&m);
createlist_p(p,m);
printf("\t\t\t/*請輸入集合B中元素的個數:*/\n");
scanf("%d",&n);
createlist_p(q,n);
printf("集合A中元素為:");
printlist_p(p);
printf("集合B中元素為:");
printlist_p(q);
while(node<0||node>3);
switch(node)
{
case 1: Addset( p,q,r);printf("A∪B:\n");printlist_p(r);break;
case 2: Subset( p,q,r);printf("A∩B:\n");printlist_p(r);break;
case 3: Intset(p,q,r); printf("A-B:\n");printlist_p(r);break;
}
printf("\n");
}
}
可以了
樓上方法是正確的,學習!把分給樓上

㈢ 誰有這個課程設計:內存分配演算法:利用靜態鏈表,模擬實現內存分配

#include <iostream>
#include <string>
using namespace std;

struct ListNode //鏈表的節點
{
int begin;
int end;
int size;
int num;
bool freeable;
ListNode *next;
};

typedef ListNode * ListPtr;

class Mem
{
public:
Mem();
void getNumStringrequest();
void getNumStringfree();
void getrequest();
void getfreerequest();
// int getNum();
//void Insert();
//void Delete();
void Print();
void freemem();
void getmem();
private:
ListPtr first;
string request;
int requestnum;
int freenum;
string freerequest;
string str;
};

Mem::Mem() //初始化,把first置為空
{
first=new ListNode;
first->next=NULL;
str="";
}
void Mem::getrequest()
{
cout<<"請輸入內存申請請求:"<<endl;
cin>>request;
str=str+request;
}

void Mem::getfreerequest() //每次的請求都放入str中
{
cout<<"請輸入內存釋放申請請求:"<<endl;
cin>>freerequest;
str=str+freerequest;
}

void Mem::getNumStringrequest()
{
int len=request.length();
string numstring=request.substr(1,len-1);
requestnum=atoi(numstring.c_str());
cout<<"申請內存的大小是:"<<requestnum<<endl;

}
void Mem::getNumStringfree() //使用atoi函數將char *(string通過strin.c_str())可以得到char *類型
{
int len=freerequest.length();
string freestring=freerequest.substr(5,len-2);
freenum=atoi(freestring.c_str());
cout<<"釋放內存的起始地址是:"<<freenum<<endl;
}

void Mem::freemem()
{
ListNode *p=first;

閱讀全文

與演算法的課程設計題目相關的資料

熱點內容
2021世界程序員節 瀏覽:484
php翼支付 瀏覽:882
盈通伺服器ip地址 瀏覽:789
3des演算法的c語言實現 瀏覽:873
網上怎樣購買伺服器地址 瀏覽:813
新氧app都在哪個城市 瀏覽:731
十二大加密貨幣圖片 瀏覽:315
資料庫日誌自動壓縮 瀏覽:929
手機表格文檔用哪個app 瀏覽:77
找人開發app的公司怎麼樣 瀏覽:651
android藍牙發送數據 瀏覽:428
範文瀾中國通史pdf 瀏覽:755
php常用的設計模式 瀏覽:889
安卓手機怎麼一個一個的截圖 瀏覽:980
javajsondate 瀏覽:356
matlab圖像處理演算法 瀏覽:670
安卓如何禁止手機自動降頻 瀏覽:697
一份加密不緊急的上行文 瀏覽:417
伺服器c5是什麼意思 瀏覽:444
基礎程序員證 瀏覽:425