数据结构中的算法怎样转化为可执行的c语言程序啊? 怎样将数据结构中的算法代码转换成纯C语言程序

\u6570\u636e\u7ed3\u6784\u4e2d\u7684\u7b97\u6cd5\u600e\u4e48\u8f6c\u5316\u6210c\u8bed\u8a00\u7a0b\u5e8f\u554a\uff1f

1\u3001\u7b97\u6cd5\u6709\u5566\u4e00\u4e2a\u5927\u81f4\u7684\u96cf\u5f62\u540e\uff0c\u60f3\u6e05\u695a\u7b97\u6cd5\u7684\u6d41\u7a0b\uff0c\u7136\u540e\u5148\u5c06\u4e3b\u7a0b\u5e8f\u6253\u597d\uff0c\u7ec6\u8282\u5148\u7528\u8fc7\u7a0b\u4e0e\u51fd\u6570\u4ee3\u66ff\u3002
2\u3001\u7136\u540e\u518d\u5b8c\u5584\u7ec6\u8282\u90e8\u5206\u3002
3\u3001\u6700\u540e\u6784\u9020\u4e00\u4e9b\u6570\u636e\u6d4b\u8bd5\u3002
\u5efa\u8bae\u6784\u90203\u79cd\u6570\u636e\u3002
\u7b2c\u4e00\u79cd\u968f\u673a\u751f\u6210\u7684\u5927\u6570\u636e\uff0c\u4ee5\u68c0\u9a8c\u7a0b\u5e8f\u5728\u5e73\u5747\u60c5\u51b5\u4e0b\u7684\u65f6\u95f4\u6548\u7387\u3002
\u7b2c\u4e8c\u79cd\u662f\u4eba\u5de5\u6784\u9020\u7684\u5947\u8469/\u7325\u7410\u6570\u636e\uff0c\u4e14\u6700\u597d\u80fd\u786e\u5b9a\u7b54\u6848\uff0c\u4ee5\u68c0\u9a8c\u5176\u6b63\u786e\u6027\uff0c\u6bd4\u5982\u8d2a\u5fc3\u7684\u4e00\u4e9b\u53ef\u80fd\u7684\u53cd\u4f8b\u3002
\u6700\u540e\u4e00\u79cd\u662f\u4eba\u5de5\u6784\u9020\u7684\u7279\u6b8a\u6570\u636e\uff0c\u6bd4\u5982\uff0c\u5728\u6709\u5173\u6811\u7684\u9898\u76ee\u4e2d\uff0c\u5c06\u8f93\u5165\u4e2d\u7684\u6811\u9000\u5316\u6210\u4e00\u6761\u94fe\u3002

1\u3001\u5982\u679c\u7b97\u6cd5\u63cf\u8ff0\u5df2\u7ecf\u5f88\u5f7b\u5e95\u4e86\uff0c\u53ea\u8981\u8865\u5145\u53d8\u91cf\u5b9a\u4e49\uff0c\u7b49\u8bed\u8a00\u7ec6\u8282\u5c31\u53ef\u4ee5\uff0c\u628a\u7b97\u6cd5\u63cf\u8ff0\u8f6c\u5316\u4e3a\u5404\u79cd\u7f16\u7a0b\u8bed\u8a00\u4e86\u3002\u5982\u679c\u53ea\u662f\u6cdb\u6cdb\u800c\u8bba\uff0c\u81ea\u5df1\u53bb\u628a\u7b97\u6cd5\u8f6c\u6362\u6210\u4f2a\u4ee3\u7801\u63cf\u8ff0\uff0c\u6216\u8005\u6d41\u7a0b\u56fe\u4e4b\u7c7b\u7684\uff0c\u7136\u540e\u518d\u7528C\u8bed\u8a00\u5b9e\u73b0\u3002
2\u3001\u7b97\u6cd5\u53ea\u662f\u4e00\u79cd\u5904\u7406\u6570\u636e\u7684\u4e00\u79cd\u601d\u60f3\uff08\u5e38\u7528\u4f2a\u4ee3\u7801\u8868\u793a\uff09\uff0c\u7406\u89e3\u8fd9\u79cd\u601d\u60f3\u4e4b\u540e\uff0c\u518d\u7528\u8ba1\u7b97\u673a\u8bed\u8a00\u8868\u8fbe\u51fa\u6765\uff0c\u5982\u679cC\u8bed\u6cd5\u4e0d\u8fc7\u5173\uff0c\u662f\u5f88\u96be\u5b8c\u6210\u7a0b\u5e8f\u7684\u7f16\u5199\uff0c\u6240\u4ee5C\u8bed\u8a00\u672c\u8eab\u4e5f\u8981\u8ba4\u771f\u5b66\u4e60\u624d\u884c\u3002

1、Fibonacci数列算法:Fibonacci数列有如下特点:第1,2两个数的值为1,从第3个数开始,该数是其前面两个数之和。

2、即:F1=1(n=1),F2=1(n=2),F3=F(n-1)+F(n-2)(n>=3)。运行看看。

3、数的排列之冒泡法也叫起泡法:排序的方法有两种:一种是“升序”,从小到大,一种是“降序”,从大到小。

4、每次将相邻的两个数比较。将小的调到前头。若有6个数:9,8,5,4,2,0。第一次将最前面的8和9对调。第二次将第二和第三个数对调。。。。。。如此共进行5次,得到8-5-4-2-0-9的顺序。

5、打擂台算法的思路:打擂台算法怎么确定最后的优胜者。先找任一人上台,第二个人上去与之比武,胜者留在台上,再上去第三个人与刚才得胜的人比武,胜者留,败者下。



首先要确定你想采用线性表的顺序存储结构还是链式存储结构。
以顺序存储结构为例:
#include <stdio.h>
#include <stdlib.h>

#define ERROR 0
#define OK 1

typedef int Status;
typedef int ElemType;//顺序表测试用

const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义
const int Increasement=10;

typedef struct{
ElemType *elem;
int length;
int listsize;
}SeqList;

Status InitList(SeqList &S,int n=MaxSize)
{//初始化线性表
if(n<=0)
n=MaxSize;
S.elem =(ElemType *)malloc(n*sizeof(ElemType));
if(S.elem ==NULL)
exit(ERROR);
S.length =0;
S.listsize =n;
return OK;
}

int ListLength(SeqList &S)
{ //求线性表的长度
return S.length ;
}

void GetElem(SeqList &S,int i,ElemType &e)
{//按位查找,取线性表的第i个元素
if(i<1 || i>S.length )
exit(ERROR);
e=S.elem [i-1];
}

Status ListInsert(SeqList &S,int i, ElemType e)
{ //在线性表中第i个位置插入值为e的元素
if(i<1 || i>S.length+1 )
return ERROR;
if(S.length >=S.listsize )
{
ElemType *newbase=(ElemType *)realloc(S.elem,Increasement*sizeof(ElemType));
if(newbase==NULL)
exit(ERROR);
S.elem =newbase;
S.listsize =S.listsize+Increasement;
}
for(int j=S.length -1;j>=i-1;j--)
S.elem [j+1]=S.elem [j];
S.elem [i-1]=e;
S.length++;
return OK;
}

Status Output(SeqList S)
{//遍历线性表,按序号依次输出各元素
if(S.length ==0)
return ERROR;
for(int i=0;i<S.length ;i++)
printf("%d\t",S.elem[i]);
printf("\n");
return OK;
}

void BinInsertSort(int r[ ], int n)
{//折半插入排序
int low,high,mid;
ElemType e;
for (int i=1; i<n; i++)
{
e=r[i];
low=0; high=i;
while (low<=high)
{
mid=(low+high)/2;
if (e<r[mid])
high=mid-1;
else low=mid+1;
}
for (int j=i-1; j>=high+1; j--)
r[j+1]=r[j];
r[high+1]=e;
}
}

void MergeList(SeqList La, SeqList Lb, SeqList &Lc) {
// 已知顺序表La和Lb中的元素按值非递减排列。
// 归并La和Lb得到新的顺序表Lc,Lc的元素也按值非递减排列。
int La_len, Lb_len;
ElemType ai, bj;
int i=1, j=1, k=0;
InitList(Lc);
La_len = ListLength(La);
Lb_len = ListLength(Lb);
while ((i <= La_len) && (j <= Lb_len)) { // La和Lb均非空
GetElem(La, i, ai);
GetElem(Lb, j, bj);
if (ai <= bj) {
ListInsert(Lc, ++k, ai);
++i;
} else {
ListInsert(Lc, ++k, bj);
++j;
}
}
while (i <= La_len) {
GetElem(La, i++, ai); ListInsert(Lc, ++k, ai);
}
while (j <= Lb_len) {
GetElem(Lb, j++, bj); ListInsert(Lc, ++k, bj);
}
} // MergeList

void main()
{
SeqList La,Lb,Lc;
InitList(La,3);
InitList(Lb,5);
ElemType data;

printf("输入顺序表La的元素值:\n");
for(int i=1;i<=3;i++)
{
scanf("%d",&data);
ListInsert(La, i, data);
}

fflush(stdin);
printf("输入顺序表Lb的元素值:\n");
for(i=1;i<=5;i++)
{
scanf("%d",&data);
ListInsert(Lb, i, data);
}

//La和Lb非递减排序
BinInsertSort(La.elem , 3);
BinInsertSort(Lb.elem , 5);

MergeList(La,Lb,Lc);
Output(Lc);
}

1、如果算法描述已经很彻底了,只要补充变量定义,等语言细节就可以,把算法描述转化为各种编程语言了。如果只是泛泛而论,自己去把算法转换成伪代码描述,或者流程图之类的,然后再用C语言实现。
2、算法只是一种处理数据的一种思想(常用伪代码表示),理解这种思想之后,再用计算机语言表达出来,如果C语法不过关,是很难完成程序的编写,所以C语言本身也要认真学习才行。

哥们你有提问的功夫,你也百度出来啦

  • 鏁版嵁缁撴瀯涓殑绠楁硶鎬庢牱杞寲涓哄彲鎵琛岀殑c璇█绋嬪簭鍟?
    绛旓細3銆佹暟鐨勬帓鍒椾箣鍐掓场娉曚篃鍙捣娉℃硶锛氭帓搴忕殑鏂规硶鏈変袱绉嶏細涓绉嶆槸鈥滃崌搴忊锛屼粠灏忓埌澶э紝涓绉嶆槸鈥滈檷搴忊濓紝浠庡ぇ鍒板皬銆4銆佹瘡娆″皢鐩搁偦鐨勪袱涓暟姣旇緝銆傚皢灏忕殑璋冨埌鍓嶅ご銆傝嫢鏈6涓暟锛9,8,5,4,2,0銆傜涓娆″皢鏈鍓嶉潰鐨8鍜9瀵硅皟銆傜浜屾灏嗙浜屽拰绗笁涓暟瀵硅皟銆傘傘傚姝ゅ叡杩涜5娆★紝寰楀埌8-5-4-2-0-9鐨...
  • 濡備綍鎶绠楁硶杞彉鎴璁$畻鏈鸿兘鎵ц鐨勭▼搴?
    绛旓細濡傛灉瑕佺紪璇戝苟涓旇繍琛屽畠锛鍙渶瑕侀夋嫨涓绉嶇▼搴忚瑷锛坖ava鎴朿绛夛級鎶婁吉浠g爜鎻忚堪鐨勭畻娉曟牳蹇冨疄鐜板氨鍙互浜嗭紝鐒跺悗鐢ㄥ搴旂殑缂栬瘧鍣ㄦ潵瀹屾垚缂栬瘧锛屽氨鍙互杩愯浜 绁濊繘姝
  • 鏁版嵁缁撴瀯,鏈绠楁硶姹傝ˉ鍏鎴愬彲鎵琛岀▼搴.(姹傝兘杩愯鐨勭▼搴)棰樼洰濡備笅,绠楁硶闄...
    绛旓細/*浣犳彁渚鐨勭畻娉鎻掑叆鑺傜偣浠g爜濂藉儚鏈夐棶棰橈紝鎴戜慨鏀逛簡閮ㄥ垎*/
  • 涓銆鏁版嵁缁撴瀯鍜绠楁硶娴呮瀽
    绛旓細绠楁硶涓墽琛岀殑浠讳綍璁$畻姝ラ閮芥槸鍙互琚垎瑙d负鍩烘湰鐨勫彲鎵ц鐨勬搷浣滄楠わ紝鍗虫瘡涓绠楁楠ら兘鍙互鍦ㄦ湁闄愭椂闂村唴瀹屾垚锛堜篃绉颁箣涓烘湁鏁堟э級銆傜畻娉曞鏉傚害---鏁版嵁缁撴瀯鍜岀畻娉曞涔犵殑绮鹃珦 绠楁硶澶嶆潅搴︽槸鎸囩畻娉曞湪缂栧啓鎴愬彲鎵ц绋嬪簭鍚庯紝杩愯鏃舵墍闇瑕佺殑璧勬簮锛岃祫婧愬寘鎷椂闂磋祫婧愬拰鍐呭瓨璧勬簮銆傚簲鐢ㄤ簬鏁板鍜岃绠楁満瀵艰銆1銆佹暟鎹粨鏋勬槸...
  • 鎬庢牱灏鏁版嵁缁撴瀯涓殑绠楁硶浠g爜杞崲鎴绾疌璇█绋嬪簭
    绛旓細1銆佸鏋滅畻娉曟弿杩板凡缁忓緢褰诲簳浜嗭紝鍙琛ュ厖鍙橀噺瀹氫箟锛岀瓑璇█缁嗚妭灏卞彲浠ワ紝鎶婄畻娉曟弿杩拌浆鍖栦负鍚勭缂栫▼璇█浜銆傚鏋滃彧鏄硾娉涜岃锛岃嚜宸卞幓鎶婄畻娉曡浆鎹㈡垚浼唬鐮佹弿杩帮紝鎴栬呮祦绋嬪浘涔嬬被鐨勶紝鐒跺悗鍐嶇敤C璇█瀹炵幇銆2銆佺畻娉曞彧鏄竴绉嶅鐞嗘暟鎹殑涓绉嶆濇兂锛堝父鐢ㄤ吉浠g爜琛ㄧず锛夛紝鐞嗚В杩欑鎬濇兂涔嬪悗锛屽啀鐢ㄨ绠楁満璇█琛ㄨ揪鍑烘潵锛屽鏋淐璇硶...
  • 鎬庝箞灏鏁版嵁缁撴瀯鐨勭畻娉曞彉涓绋嬪簭?
    绛旓細鏁版嵁缁撴瀯璇寸殑閮芥槸浜绠楁硶,缂栫▼鐨勬讳綋鎬濊矾..姣忎竴涓畻娉曟濇兂瀵瑰簲鐫涓娈靛叿浣撶殑鍑芥暟瀹炵幇,灏嗗熀鏈殑鍐欏嚭鏉ュ悗,鍐嶇紪鍐檓ain()鍑芥暟,灏嗗疄闄呴棶棰杞崲杩囨潵,鍦╩ain()鍑芥暟閲屽啀璋冪敤涓涓竴涓嚱鏁(绠楁硶瀹炵幇),閫氳繃姝g‘鐨勫弬鏁颁紶閫掑拰璇彞,杩欏氨鏄竴涓畬鏁寸殑C/C++绋嬪簭 ...
  • 浠涔堟槸璁$畻鏈虹▼搴忚璁?
    绛旓細浠g爜涓寘鍚簡涓绯诲垪鎸囦护锛岃繖浜涙寚浠ゅ彲浠ヨ璁$畻鏈烘寜鐓ч瀹氱殑姝ラ鎵ц鐗瑰畾鐨勬搷浣滐紝浠庤屽疄鐜扮▼搴忕殑鍔熻兘銆傝绠楁満绋嬪簭璁捐鐨勮繃绋嬮渶瑕佹濈淮鐨勯昏緫鎬у拰鍒涢犳с傜▼搴忓憳闇瑕佺悊瑙i棶棰樼殑鏈川锛屽垎鏋愰棶棰樼殑缁撴瀯鍜岀壒鐐癸紝璁捐鍑洪珮鏁鐨勭畻娉锛屽苟灏嗙畻娉杞寲涓哄彲鎵琛岀殑浠g爜銆傚悓鏃讹紝绋嬪簭璁捐涔熼渶瑕佽冭檻浠g爜鐨勫彲璇绘с佸彲缁存姢鎬у拰鍙墿灞...
  • 鏁版嵁缁撴瀯鐨勭畻娉曞浣曞彉鎴C璇█绋嬪簭
    绛旓細鍏蜂綋鎬庝箞瀹炵幇鐨勫緱闈犺嚜宸变簡锛屽洜涓鏁版嵁缁撴瀯涓殑绠楁硶閮芥槸绫籧璇█锛屽苟涓嶈兘涓婃満瀹炵幇锛屾墍浠ラ渶瑕佽嚜宸卞啓鎴恈鐨勫舰寮忥紝骞朵笂鏈鸿皟璇曪紒锛侊紒鍏跺疄鐪熸閿荤偧鑷繁鑳藉姏鐨勫氨鏄妸绠楁硶鍙樻垚c璇█绋嬪簭锛屾病鏈変粈涔堝ソ鐨勬柟娉曪紝鍙兘澶氱粌澶氳皟璇曪紒锛侊紒鍚屾椂涔熷彲浠ュ弬鑰冧笅鍒汉鐨勪唬鐮侊紝璇绘槑鐧戒簡锛屽湪澶氱粌鍑犳灏变細浜嗭紒锛侊紒甯屾湜鍙互甯綘锛侊紒c...
  • 绠楁硶鐨勬弿杩般佺壒鎬т互鍙婃蹇
    绛旓細鍒嗙被锛绠楁硶鍙澶ц嚧鍒嗕负鍩烘湰绠楁硶銆鏁版嵁缁撴瀯鐨勭畻娉銆佹暟璁轰笌浠f暟绠楁硶銆佽绠楀嚑浣曠殑绠楁硶銆佸浘璁虹殑绠楁硶銆佸姩鎬佽鍒掍互鍙婃暟鍊煎垎鏋愩佸姞瀵嗙畻娉曘佹帓搴忕畻娉曘佹绱㈢畻娉曘侀殢鏈哄寲绠楁硶銆佸苟琛岀畻娉曪紝鍘勭背鍙樺舰妯″瀷锛岄殢鏈烘.鏋楃畻娉曘傜壒寰侊細鏈夌┓鎬э紝绠楁硶鐨勬湁绌锋ф槸鎸囩畻娉曞繀椤昏兘鍦ㄦ墽琛屾湁闄愪釜姝ラ涔嬪悗缁堟锛涚‘鍒囨э紝绠楁硶鐨勬瘡涓姝ラ蹇呴』鏈...
  • C璇█,鏁版嵁缁撴瀯绠楁硶 鎴戣鏄兂鏀规垚棰樼洰涓殑杩欑鏍峰瓙搴旇鎬庝箞鏀?_鐧惧害...
    绛旓細typedef int datatype;typedef struct node { datatype *data;int length;}Linklist,*pnode;Linklist *CreatList(Linklist *L,datatype a[],int n) { int i = 0;if(n > N) n = N;L = (Linklist *)malloc(sizeof(Linklist));if(L == NULL) { printf("鍐呭瓨鑰楀噣!\n");exit(2...
  • 扩展阅读:一键生成数据分析图 ... 一个表格相同数据汇总 ... 数据结构真的很难学吗 ... 数据结构是最难的课吗 ... 数据结构中算法指的是 ... 数据汇总的三种方法 ... 数据结构与算法怎么学 ... 数据生成的三种方式 ... 递归算法是运算最快的算法 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网