① 數據結構中的演算法轉換成c語言應該注意的問題
如果是c語言描述的數據結構演算法,由於用的是類c語言,也就是一種偽代碼,所以它主要是描述演算法的邏輯,轉換成c語言的時候,要根據c語言的語法規則進行修改。下面是我的網路貼吧,裡面有些c語言實現的數據結構演算法。
http://tieba..com/f?ct=&tn=&rn=&pn=&lm=&kw=%c4%ab%bd%b3&rs2=0&myselectvalue=1&word=%c4%ab%bd%b3&tb=on
② 數據結構類C語言代碼轉換為c++或c語言代碼
用C++的話可以直接用std::list,題中的 GetElemP_DuL 相當於擾散敗 list<EleType>緩顫掘氏::iterator j = mylist.begin(); for (int ii=0; j != mylist.end() && ii < i; ++j, ++ii); return j;
而 ListInsert_DuL 相當於 list::insert 函數。
③ 數據結構中的演算法怎麼轉化成c語言程序啊
1、演算法有啦一個大致的雛形後,想清楚演算法的流程,然後先將主程序打好,細節先用過程與函數代替。
2、然後再完善細節部分。
3、最後構造一些數據測試。
建議構造3種數據。
第一種隨機生成的大數據,以檢驗程序在平均情況下的時間效率。
第二種是人工構造的奇葩/猥瑣數據,且最好能確定答案,以檢驗其正確性,比如貪心的一些可能的反例。
最後一種是人工構造的特殊數據,比如,在有關樹的題目中,將輸入中的樹退化成一條鏈。
④ 求助:數據結構演算法改為C語言程序(急)
#include "stdio.h"
#include "stdlib.h"
#define OK 1
#define ERROR 0
#define MAX 11
#define OVERFLOW 0
typedef int ElemType;
typedef struct
{
ElemType *base;//動態分配存儲空間
int length;//隊列長度
int rear;//隊尾指針,指向隊尾元素
}SqQueue;
int EnQueue(SqQueue &Q,ElemType x)
{//帶length域的循環隊列入隊演算法
if(Q.length==MAX)return ERROR;//隊列滿
Q.rear=(Q.rear+1)%MAX;
Q.base[Q.rear]=x;
Q.length++;
return OK;
}
int DeQueue(SqQueue &Q,ElemType &x)
{//帶length域的循環隊列出隊演算法
int head;
if(Q.length==0)return ERROR;//隊列空
head=(Q.rear-Q.length+1)%MAX;
x=Q.base[head];
Q.length--;
return OK;
}
int InitQueue(SqQueue &Q)
{//構造一個空循環隊列Q
Q.base=new ElemType[MAX];
if(!Q.base) exit(OVERFLOW);
Q.rear=0;
Q.length=0;
return OK;
}
int main()
{
SqQueue Q;
int x,y;
if(InitQueue(Q))
{
printf("請輸入10個入隊元素:");
for(int i=1;i<11;i++)
{
scanf("%d",&x);
EnQueue(Q,x);
}
DeQueue(Q,y);
printf("\n隊頭元素是:%d\n",y);
}
return 0;
}
//你的代碼里已經寫了隊列滿的條件了,在入隊演算法的第一行
⑤ 數據結構 棧 進制轉換,用C語言描述
#include<stdio.h>
#include<stdlib.h>
#defineOK1
#defineERROR-1
#defineOVERFLOW-2
#defineSTACK_INIT_SIZE50
#defineSTACKINCREMENT10
typedefintSElemType;
typedefintStatus;
typedefstruct{
SElemType*base;
SElemType*top;
intstacksize;
}SqStack;
StatusInitStack(SqStack&S)
{//構建一個空棧
S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base)exit(OVERFLOW);//存儲分配失敗
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
returnOK;
}
StatusDestroyStack(SqStack&S)
{if(!S.base)returnERROR;//若棧未建立(尚未分配棧空間)
free(S.base);//回收棧空間
S.base=S.top=NULL;
S.stacksize=0;
returnOK;
}//DetroyStack
StatusPush(SqStack&S,chare)
{//插入元素e為新的棧頂元素
if(S.top-S.base>=S.stacksize){//棧滿,追加存儲空間
S.base=(SElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(SElemType));
if(!S.base)returnOVERFLOW;//存儲分配失敗
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
returnOK;
}//Push
StatusPop(SqStack&S,char&e)
{//若棧不空,則刪除S的棧頂元素
//用e返回其值,並返回OK;否則返回ERROR
if(S.top==S.base)returnERROR;
e=*(--S.top);
returnOK;
}//Pop
Statustwo()
{SElemTypen;chare;
SqStackS;
InitStack(S);//建空棧
printf("請輸入一個十進制正整數: ");//該函數未檢查是否為正數和整數
scanf("%d",&n);
printf("的2進制是:");
while(n)
{
Push(S,n%2);//N/2餘數進棧
n=n/2;//整除運算
}
while(S.top!=S.base){
Pop(S,e);
printf("%d",e);
}
printf(" ");
DestroyStack(S);
}
Statuseight()
{SElemTypen;chare;
SqStackS;
InitStack(S);//建空棧
printf("請輸入一個十進制正整數: ");
scanf("%d",&n);
printf("的8進制是:");
while(n)
{
Push(S,n%8);//N/8餘數進棧
n=n/8;//整除運算
}
while(S.top!=S.base){
Pop(S,e);
printf("%d",e);
}
printf(" ");
DestroyStack(S);
}
Statussixteen()
{SElemTypen;chare;
SqStackS;
InitStack(S);//建空棧
printf("請輸入一個十進制正整數: ");
scanf("%d",&n);
printf("的16進制是:");
while(n)
{e=n%16;
If(e==0)e='0';
if(e==1)e='1';
if(e==2)e='2';
if(e==3)e='3';
if(e==4)e='4';
if(e==5)e='5';
if(e==6)e='6';
if(e==7)e='7';
if(e==8)e='8';
if(e==9)e='9';
if(e==10)e='A';
if(e==11)e='B';
if(e==12)e='C';
if(e==13)e='D';
if(e==14)e='E';
if(e==15)e='F';
Push(S,e);//N/16餘數進棧
n=n/16;//整除運算
}
while(S.top!=S.base){
Pop(S,e);
printf("%s",&e);
}
printf(" ");
DestroyStack(S);
}
intmain()
{intflag;
intselect;
printf("主菜單 ");
printf("1.2進制 ");
printf("2.8進制 ");
printf("3.16進制 ");
printf("4.退出 ");
while(flag)
{printf("請選擇:");
scanf("%d",&select);
switch(select)
{
case1:
two();
break;
case2:
eight();
break;
case3:
sixteen();
break;
case4:
flag=0;
break;
}
}
}
⑥ 怎樣將數據結構中的演算法代碼轉換成純C語言程序
1、如果演算法描述已經很徹底了,只要補充變數定義,等語言細節就可以,把演算法描述轉化為各種編程語言了。如果只是泛泛而論,自己去把演算法轉換成偽代碼描述,或者流程圖之類的,然後再用c語言實現。 2、演算法只是一種處理數據的一種思想(常用偽代碼表示),理解這種思想之後,再用計算機語言表達出來,如果c語法不過關,是很難完成程序的編寫,所以c語言本身也要認真學習才行。
⑦ 數據結構中的演算法怎樣轉化為可執行的c語言程序啊
1、Fibonacci數列演算法:Fibonacci數列有如下特點:第1,2兩個數的值為1,從第3個數開始,該數是其前面兩個數之和。
⑧ 數據結構的演算法如何變成C語言程序
具體怎麼實現的得靠自己了,因為數據結構中的演算法都是類c語言,並不能上機實現,所以需要自己寫成c的形式,並上機調試!!!
其實真正鍛煉自己能力的就是把演算法變成c語言程序,沒有什麼好的方法,只能多練多調試!!!同時也可以參考下別人的代碼,讀明白了,在多練幾次就會了!!!
希望可以幫你!!
c編程高手團隊正在招新,有意者速速行動一起學習,一起努力!!