C语言数据结构的一个基本问题 c语言里数据结构的一个问题。。
\u95ee\u4e00\u4e2aC\u8bed\u8a00\u6570\u636e\u7ed3\u6784\u7684\u57fa\u7840\u95ee\u9898e\u662fint\u6307\u9488
*e\u662fe\u6240\u6307\u5411\u7684int\u53d8\u91cf
S->data\u662fint\u6570\u7ec4
1\u3001*e\u662fint\u53d8\u91cf\uff0c\u53ef\u4ee5\u50a8\u5b58S->data\u6570\u7ec4\u4e2d\u7684\u4e00\u4e2a\u6574\u6570
2\u3001*e\u4e2d\u4fdd\u5b58\u7684\u662f\u6570\u7ec4S->data\u4e2d\u7684\u4e00\u4e2a\u503c
3\u3001\u4f20\u56de\u7684*e\u5728\u51fd\u6570\u5916\u9762\u770b\u7684\u65f6\u5019\uff0c\u540d\u5b57\u4e0d\u53eb*e\uff0c\u6240\u4ee5\u8f93\u51fa\u65f6\uff0c\u672c\u6765\u53eb\u4ec0\u4e48\u5c31\u600e\u4e48\u8f93\u51fa
\u6bd4\u5982\u4f60\u6709\u4e00\u4e2aSqStack\u7684\u6307\u9488\u53ebS\uff0c\u73b0\u5728\u60f3\u53d6\u6808\u9876\u7684\u503c\u5e76\u6253\u5370\u8f93\u51fa
int topValue;if (Pop(S, &topValue)){ printf("%d", topValue);}4\u3001\u56e0\u4e3a\u6808\u6709\u53ef\u80fd\u662f\u7a7a\u7684\uff0c\u6808\u9876\u4e0d\u4e00\u5b9a\u603b\u6709\u503c\uff0c\u6240\u4ee5\u8fd4\u56de\u4e00\u4e2aint\u8868\u793a\u6210\u529f\u6216\u5931\u8d25\uff08TRUE\u6216FALSE\uff09\uff0c\u5982\u679cTRUE\uff0c\u5219\u771f\u6b63\u7684\u6808\u9876\u503c\u901a\u8fc7*e\u8fd4\u56de\uff0c\u5982\u679c\u76f4\u63a5\u8fd4\u56dee\uff0c\u4e0d\u80fd\u5904\u7406\u6808\u9876\u662f\u7a7a\u7684\u60c5\u51b5
1\u3001typedef struct \u3010list\u3011
\u8fd9\u91cc\u7684list\u53ea\u662f\u4e00\u4e2a\u8d77\u7684\u540d\u5b57\uff0c\u5982int\u662f\u6574\u5f62\uff0clist \u662f\u8fd9\u4e2a\u7ed3\u6784\u4f53\u7684\u7c7b\u578b\u3002
\u4e0b\u9762\u7684list\u5c31\u662f int i \uff0c list\u5c31\u662f\u90a3\u4e2ai\uff1b
2\u3001\u5b9a\u4e49\u7684\u65f6\u5019\u6ca1\u6709\u4e0b\u4e00\u4e2a\u8282\u70b9\uff0c\u4e00\u822c\u90fd\u662f\u7528 p->next = null\uff1b
3\u3001\u4e66\u4e0a\u4e00\u822c\u7ed9\u7684\u90fd\u662f\u4f2a\u4ee3\u7801\uff0c\u5728\u5b9e\u9645\u5199\u7a0b\u5e8f\u4e2d \u81ea\u5df1\u8981\u7ed3\u5408\u8d77\u6765\u624d\u80fd\u8fd0\u884c\u3002\u4e66\u4e0a\u90fd\u633a\u8be6\u7ec6\u82b1\u65f6\u95f4\u53c2\u8003\u5c31\u80fd\u591f\u5199\u51fa\u6765\uff0c\u8003\u8bd5\u7684\u8bdd\u770b\u9898\u76ee\u600e\u4e48\u8981\u6c42\u7684\u5c31\u600e\u4e48\u5904\u7406\u597d\u4e86\uff0c\u4e00\u822c\u8003\u8bd5\u770b\u4f60\u5199\u7684\u903b\u8f91\u6ca1\u4ec0\u4e48\u95ee\u9898\u5c31\u53ef\u4ee5\u3002
2 { //i row j column ,总行数为column
3 return((*(int*)array + i*column + j));
4 }
以上函数的参数第一行的int **array是函数参数这个参数说明该函数参数列表一接收的数据类型为int ** 型的变量 也就是指向int*型指针变量的指针变量
那么return((*(int*)array + i*column + j));
这里涉及到运算符的优先级别 可以自己看书
1.由于()运算符此时最高所以先算
*(int*)array + i*column + j
2. 由于()这里是(数据类型)强制转换运算符运算符此时最高所以先算
(int*)array
3.以下表达式中*运算符(指针运算符)此时级别最高所以取出array指向的内存空间
由于这里的array已经在上一步中强制转换为int*类型了所以*array就是取出arry指向的内存空间的值我们假设是3
*array + i*column + j
4 以下表达式中*(乘号)运算符的优先级别最高
假设i = 5,colunm = 1,j = 2;
4 + i*column + j
4 + 5 + 2
把结果11return给调用函数
我想你可能是对运算符的优先级别有不明白的地方。或者指针不明白了。
包含几个知识点:运算符优先级别 函数调用 函数参数 数组
二维指针数组 和指针的关系
这个一句两句讲不清楚
以上重点讲解优先级
结合注释来看,该语句含义为 返回二维数组array中第i行第j个元素的值
另外,这里边以column为总行数容易引起歧义(column一词原意为“列”)。
绛旓細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))鏃负琛ㄩ暱
绛旓細// 閫掑綊鐨勪唬鐮侊細void Swap(Bitree *lpNode){ // 灏嗗叾宸﹀瓙鏍戝拰鍙冲瓙鏍戜氦鎹 Bitree *lpTemp = lpNode->left; lpNode->left = lpNode->right; lpNode->right = lpTemp; // 濡傛灉宸﹀瓙鏍戜笉涓虹┖锛屽垯閫掑綊宸﹀瓙鏍 if (lpNode->left) { Swap(lpNode->left); } ...
绛旓細queue->front++ 杩欓噷鐨++灏变綋鐜颁簡鈥滃嚭闃熲濈殑鎿嶄綔銆
绛旓細//鏋勯涓涓绌烘爤S (*S)->base=(char *)malloc(STACK_INIT_SIZE * sizeof(char));if (!(*S)->base) exit(OVERFLOW);// (*S)->stacksize=STACK_INIT_SIZE;//瀛樺偍鍒嗛厤澶辫触 (*S)->top=(*S)->base;}//InitStack SqStack *S;InitStack(&S);//閿欒鍒嗘瀽:鍥犱负C瀵逛簬鍙傛暟閮芥槸鎷疯礉浼犻掋
绛旓細/* 杩欐槸涓涓鍏稿瀷鐨勫崟閾捐〃鏁版嵁缁撴瀯闂銆備笅闈㈢敤鍗曢摼琛ㄦ柟寮忓姞浠ヨ鏄庛傞鍏堬紝姝g‘瀹氫箟涓涓崟閾捐〃缁撴瀯锛涘叾娆★紝鍒濆鍖栧崟閾捐〃锛屽叾涓寘鎷袱涓楠わ紝绗竴鏄垎閰嶅崟閾捐〃绌洪棿锛岀浜屾槸缁欏崟閾捐〃鐨勬瘡涓涓〃椤硅祴鍒濆硷紱鍐嶆锛屾牴鎹緭鍏ョ殑i鍜宬璋冪敤鍒犻櫎绠楁硶锛涙渶鍚庯紝杈撳嚭缁撴灉锛屽苟閲婃斁鍗曢摼琛ㄧ┖闂淬傛敞鎰忥紝浣跨敤杩欎釜鏂规硶鍚庯紝鏈缁...
绛旓細杩欎釜鏄绠梟瓒嬩簬鏃犵┓澶ф椂鐨勯樁娆★紝鍥犳闃舵浠庝綆鍒伴珮鐨勬搴忎负锛31+1/n , 100n + nlog2(n), 20log2(2^n) + n^2, 2^n + 89n^3
绛旓細鐢变簬鍏蜂綋瀹炵幇鐨勬柟娉曟湁椤哄簭銆侀摼鎺ャ佺储寮曘佹暎鍒楃瓑澶氱锛屾墍浠ワ紝涓绉鏁版嵁缁撴瀯鍙〃绀烘垚涓绉嶆垨澶氱瀛樺偍缁撴瀯銆傛暟鎹厓绱犵殑鏈哄唴琛ㄧず(鏄犲儚鏂规硶): 鐢ㄤ簩杩涘埗浣(bit)鐨勪綅涓茶〃绀烘暟鎹厓绱犮傞氬父绉拌繖绉嶄綅涓蹭负鑺傜偣(node)銆傚綋鏁版嵁鍏冪礌鏈夎嫢骞蹭釜鏁版嵁椤圭粍鎴愭椂锛屼綅涓蹭腑涓庝釜鏁版嵁椤瑰搴旂殑瀛愪綅涓茬О涓烘暟鎹煙(data field)銆傚洜...
绛旓細for(i=0; i<len; i++)//杈撳嚭鍒濆鏁版嵁 printf("%d ",num[i]); printf("\n杈撳叆涓涓鏁版彃鍏ュ湪绗簩浣嶅墠闈細"); for(i=len; i>=2; i--)//灏嗚鎻掑叆鐨勪綅缃殑鍚庨潰鏁版嵁鍚戝悗绉讳竴浣嶏紝缁欐彃鍏ユ暟鎹暀涓嬬┖浣 num[i+1] = num[i]; scanf("%d",&num[2]);//杈撳叆鎻掑叆鐨勬暟鎹...
绛旓細甯﹀ご缁撶偣鐨勫惊鐜摼琛紝 褰撲负绌虹殑鏃跺欙紝head鎸囧悜鑷韩銆 鍗 head->next=head 涓嶅瓨鍦╤ead->next=NULL鐨勬儏鍐点傝浣 寰幆閾捐〃 瑕佷竴鐩翠繚鎸佸湪鐜姸缁撴瀯
绛旓細while(x!=-1){ s=new Lnode;s->data=x;r->next =s;r=s;cout<<"璇疯緭鍏ユ暟鎹紝鍚﹀垯杈撳叆-1缁撴潫鏁版嵁鐨杈撳叆锛乗n";cin>>x;} r->next=NULL;return L;} Linklist combine(Lnode *A,Lnode *B){ Lnode *pa,*pb,*s;C=A;s=C;pa=A->next ;pb=B->next ;while(pa&&pb){ ...