数据结构c语言版问题 数据结构,C语言版的编程问题
\u6570\u636e\u7ed3\u6784C\u8bed\u8a00\u7248\u95ee\u98981.\u5b9e\u73b0\u6c42\u6700\u5927\u503c\u7684\u51fd\u6570\u5982\u4e0b\uff1a
template ListNode * List :: Max ( ) {
//\u5728\u5355\u94fe\u8868\u4e2d\u8fdb\u884c\u4e00\u8d9f\u68c0\u6d4b\uff0c\u627e\u51fa\u5177\u6709\u6700\u5927\u503c\u7684\u7ed3\u70b9\u5730\u5740, \u5982\u679c\u8868\u7a7a, \u8fd4\u56de\u6307\u9488NULL
if ( first->link == NULL ) return NULL; //\u7a7a\u8868, \u8fd4\u56de\u6307\u9488NULL
ListNode * pmax = first->link, p = first->link->link;
//\u5047\u5b9a\u7b2c\u4e00\u4e2a\u7ed3\u70b9\u4e2d\u6570\u636e\u5177\u6709\u6700\u5927\u503c
while ( p != NULL ) { //\u5faa\u73af, \u4e0b\u4e00\u4e2a\u7ed3\u70b9\u5b58\u5728
if ( p->data > pmax->data ) pmax = p; //\u6307\u9488pmax\u8bb0\u5fc6\u5f53\u524d\u627e\u5230\u7684\u5177\u6700\u5927\u503c\u7ed3\u70b9
p = p->link; //\u68c0\u6d4b\u4e0b\u4e00\u4e2a\u7ed3\u70b9
}
return pmax;
}
2.\u5b9e\u73b0\u4ece\u4e00\u7ef4\u6570\u7ec4A[n]\u5efa\u7acb\u5355\u94fe\u8868\u7684\u51fd\u6570\u5982\u4e0b\uff1a
template void List :: Create ( Type A[ ], int n ) {
//\u6839\u636e\u4e00\u7ef4\u6570\u7ec4A[n]\u5efa\u7acb\u4e00\u4e2a\u5355\u94fe\u8868\uff0c\u4f7f\u5355\u94fe\u8868\u4e2d\u5404\u5143\u7d20\u7684\u6b21\u5e8f\u4e0eA[n]\u4e2d\u5404\u5143\u7d20\u7684\u6b21\u5e8f\u76f8\u540c
ListNode * p;
first = p = new ListNode; //\u521b\u5efa\u8868\u5934\u7ed3\u70b9
for ( int i = 0; i < n; i++ ) {
p->link = new ListNode ( A[i] ); //\u94fe\u5165\u4e00\u4e2a\u65b0\u7ed3\u70b9, \u503c\u4e3aA[i]
p = p->link; //\u6307\u9488p\u603b\u6307\u5411\u94fe\u4e2d\u6700\u540e\u4e00\u4e2a\u7ed3\u70b9
}
p->link = NULL;
}
\u6216\u8005\u91c7\u7528\u9012\u5f52\u65b9\u6cd5\u5b9e\u73b0
template void List :: create ( Type A[ ], int n, int i,
ListNode *& p ) {
//\u79c1\u6709\u51fd\u6570\uff1a\u9012\u5f52\u8c03\u7528\u5efa\u7acb\u5355\u94fe\u8868
if ( i == n ) p = NULL;
else { p = new ListNode( A[i] ); //\u5efa\u7acb\u94fe\u8868\u7684\u65b0\u7ed3\u70b9
create ( A, n, i+1, p->link ); //\u9012\u5f52\u8fd4\u56de\u65f6p->link\u4e2d\u653e\u5165\u4e0b\u5c42p\u7684\u5185\u5bb9
}
}
template void List :: create ( Type A[ ], int n ) {
//\u5916\u90e8\u8c03\u7528\u9012\u5f52\u8fc7\u7a0b\u7684\u5171\u7528\u51fd\u6570
first = current = new ListNode; //\u5efa\u7acb\u8868\u5934\u7ed3\u70b9
create ( A, n, 0, first->link ); //\u9012\u5f52\u5efa\u7acb\u5355\u94fe\u8868
}
3\uff0c \u5b9e\u73b0\u5728\u975e\u9012\u51cf\u6709\u5e8f\u7684\u5355\u94fe\u8868\u4e2d\u5220\u9664\u503c\u76f8\u540c\u7684\u591a\u4f59\u7ed3\u70b9\u7684\u51fd\u6570\u5982\u4e0b\uff1a
template void List :: tidyup ( ) {
ListNode * p = first->link, temp; //\u68c0\u6d4b\u6307\u9488, \u521d\u59cb\u65f6\u6307\u5411\u94fe\u8868\u7b2c\u4e00\u4e2a\u7ed3\u70b9
while ( p != NULL && p->link != NULL ) //\u5faa\u73af\u68c0\u6d4b\u94fe\u8868
if ( p->data == p->link->data ) { //\u82e5\u76f8\u90bb\u7ed3\u70b9\u6240\u5305\u542b\u6570\u636e\u7684\u503c\u76f8\u7b49
temp = p->first; p->link = temp->link; //\u4e3a\u5220\u9664\u540e\u4e00\u4e2a\u503c\u76f8\u540c\u7684\u7ed3\u70b9\u91cd\u65b0\u62c9\u94fe
delete temp; //\u5220\u9664\u540e\u4e00\u4e2a\u503c\u76f8\u540c\u7684\u7ed3\u70b9
}
else p = p->link; //\u6307\u9488p\u8fdb\u5230\u94fe\u8868\u4e0b\u4e00\u4e2a\u7ed3\u70b9
}
\u53c2\u8003\u522b\u4eba\u7684\uff0c\u8fd9\u9898\u76ee\u6211\u624d\u4e0d\u4f1a\u505a\u3002
#include
#include
#define LENGTH 10
#define ANNOUNCER 4
int main(int argc, char **argv){
int array[LENGTH];
int len = LENGTH;
int i, j, left;
for(i = 0; i< LENGTH; i++){//marks the position that is available
array[i] = 1;
}
j = 0;
for(i = 0; i< LENGTH; i = (i+1)%10){//loop until len == 1
if(array[i] != 0){
j++;//counter
}
if(j==ANNOUNCER){//reached 4, out
array[i] = 0;//unmark
len--;
j = 0;
}
if(len == 1){
break;
}
}
for(i = 0;i<10; i++){
if(array[i] != 0){
printf("left: %d\n",i);
}
}
}
a[10,20]一列10个元素,那么a[6,2],2表示第三列(前面有0,1),前面两列就是20
第三列6个,得到20+6=26,开始地址为200,则200+26=226
A[0][0]-A[1][0]-A[2][0]-A[3][0]-A[4][0]-A[5][0]-A[6][0]-A[7][0]-A[8][0]-A[9][0]-A[0][1]-A[1][1]-A[2][1]-A[3][1]-A[4][1]-A[5][1]-A[6][1]-A[7][1]-A[8][1]-A[9][1]-A[0][2]-A[1][2]-A[2][2]-A[3][2]-A[4][2]-A[5][2]-A[6][2]-A[7][2]-A[8][2]-A[9][2]-
按列序(就是固定列的索引,先存储列索引为0、行索引0-9的元素。然后列索引+1,存储列索引为1、行索引为0-9的元素……)存储的二维数组,所以A[6][2]的地址是200+1*26=226
绛旓細绗38棰樼殑绛旀鏄疊銆傝鐪嬪浘锛欰[1..3, 1..4]鏄竴涓3琛4鍒楃殑浜岀淮鏁扮粍锛屼互鍒楀簭鎺掑垪鍏冪礌鏃讹紝鎸夊厛浠庝笂寰涓嬨佸啀浠庡乏鑷冲彸鐨勯『搴忎緷娆℃帓鍒楀悇涓厓绱狅紝濡傚浘涓殑1銆2銆3銆4...鍒嗗埆琛ㄧず浜岀淮鏁扮粍鍏冪礌鐨勫簭鍙凤紙鍒楀簭鎺掑垪锛夈侺oc(A[2,3]) = Loc(A[1,1]) + 2 * 3 + 1 = Loc(A[1,1]) + 7 ...
绛旓細瀹氫箟鍜屽0鏄庝笉鍖归厤锛屼細瀵艰嚧缂栬瘧鍣ㄧ紪璇戠殑鏃跺欐鏌ョ被鍨嬮敊璇紝浠庤屽鑷磋繍琛屼笉鍙鏈熷悗鏋 浣犺繖涓緥瀛愶紝褰㈠弬瑕佹眰鏄寚閽 浣嗘槸澹版槑涓洪潪鎸囬拡锛岃繖鏍峰鏋滀綘鎸夋寚閽堜紶瀹炲弬锛岀紪璇戝氨浼氭姤閿 鎸夌収闈炴寚閽堜紶鍊硷紝閭d箞鍦ㄥ嚱鏁板唴閮ㄥ*taller璧嬪煎氨浼氬紩璧峰穿婧 鎬讳箣浼氬嚭闂
绛旓細閭d箞A灞炰簬涓涓鏁版嵁缁撴瀯锛宎,b,p閮藉睘浜庢暟鎹厓绱犮侫鐨勫垵濮嬪ぇ灏忔槸鍥涗釜瀛楄妭锛屾棦鍏冪礌鏈澶х殑涓涓殑绌洪棿銆傘傘傞噷闈㈢殑鎴愬憳鍚屾椂瀛樺湪锛屽悇鑷湁鍚勮嚜鐨勫湴鍧锛屼簰涓嶅共鎵般傛棦pA->a,pA->b,pA->p鏄彲浠ュ悓鏃跺瓨鍦ㄦ淮銆傛暟鎹被鍨 鐢╡num 瀹氫箟锛屽叡鐢ㄥ瓨鍌ㄥ崟鍏 enum{int a=1 ,int b ,char c=鈥榗鈥檥e,b銆俥num鍏跺疄...
绛旓細1.鎵惧埌缁撴瀯鐨勫ご(H)鍜屽熬(R)2.涓嬮潰鏄吉浠g爜 while(H鍦≧涔嬪墠) do begin if data_at[H]!=data_at[R] then return false;//鑲畾涓嶅绉 H<-鍚庣户;R<-鍓嶉┍;end;return true;鏃堕棿澶嶆潅搴(strlen(s))鏃负琛ㄩ暱
绛旓細杩欎釜鏄绠梟瓒嬩簬鏃犵┓澶ф椂鐨勯樁娆★紝鍥犳闃舵浠庝綆鍒伴珮鐨勬搴忎负锛31+1/n , 100n + nlog2(n), 20log2(2^n) + n^2, 2^n + 89n^3
绛旓細include<stdio.h> include<malloc.h> /*浠庨敭鐩樿緭鍏5涓鐢熺殑淇℃伅锛屽鐢熺殑淇℃伅鍖呮嫭濮撳悕鍜屽鍙蜂袱涓儴鍒嗭紝浜х敓椤哄簭琛紝骞惰緭鍑虹敤鎴疯緭鍏ョ殑缁撶偣鍊笺備粠閿洏杈撳叆瑕佹彃鍏ュ鐢熺殑瀛﹀彿锛屽鍚嶏紝灏嗗叾鎻掑叆鍦ㄥ搴斾綅缃笂锛岃緭鍑洪『搴忚〃鎵鏈夌粨鐐瑰硷紝瑙傚療杈撳嚭缁撴灉*/ //#define uchar unsigned char //#define uint unsigned ...
绛旓細include <stdio.h> include <string.h> include <stdlib.h> define TElemType int int top=-1;//top鍙橀噺鏃跺埢琛ㄧず鏍堥《鍏冪礌鎵鍦ㄤ綅缃 typedef struct BiTNode{ TElemType data;//鏁版嵁鍩 struct BiTNode *lchild,*rchild;//宸﹀彸瀛╁瓙鎸囬拡 }BiTNode,*BiTree;//鍒濆鍖栨爲鐨勫嚱鏁 void CreateBiTree(BiTree ...
绛旓細Q->next->next=p->next;free(p);rturn OK;}//DeCiqueue 3.31 int Palindrome_Test(){ InitStack(S);InitQueue(Q);while((c=getchar())!='@'){ Push(S,c);EnQueue(Q,c);} while(!StackEmpty(S)){ pop(S,a);DeQueue(Q,b);if(a!=b)return ERROR;} return OK;} ...
绛旓細//璇曠紪鍐欎竴閬撳湪鍗曢摼琛ㄤ腑鏁版嵁鍩熷间负a鐨勭粨鐐逛箣鍚,//鎻掑叆涓涓柊缁撶偣鐨勭畻娉.鑻ュ師閾捐〃涓棤鏁版嵁鍩熷间负a鐨勭粨鐐,//鍒欐妸鏂扮粨鐐规彃鍏ュ埌琛ㄥ熬.璁炬柊缁撶偣鏁版嵁鍩熷间负x.灏忓紵鍒濆,璋㈣阿澶у鍟 //瀹氫箟缁撶偣 typedef struct node{ int data锛泂truct node *next锛泒LNode ,*LinkList;//list涓哄崟閾捐〃鐨勮〃澶存寚閽堬紝鎻掑叆...
绛旓細typedef int m;//澹版槑m涓篿nt鍨 typedef struct A//瀹氫箟缁撴瀯浣撶被鍨嬶紝骞跺0鏄嶢銆丅 {m data;//瀹氫箟m鍨嬪彉閲廳ata struck A*next;//瀹氫箟缁撴瀯浣撶被鍨婣鐨勬寚閽堝彉閲弉ext }A, *B;//A涓虹粨鏋勪綋绫诲瀷锛孊涓虹粨鏋勪綋绫诲瀷鎸囬拡 鎵鏈夛紝A銆丅涓嶆槸鍚屼竴涓被鍨嬶紝鍙畾涔変竴涓篃鍙互锛屽彲浠ヨ繖鏍峰仛銆侫 a;//瀹氫箟缁撴瀯浣...