工作以後,一直使用C++,也做過Objective C,各種類的方法封裝得很好,使用很簡單,今天偶爾翻看一下 嚴蔚敏 的 《資料結構》,第一個程式demo就看了半天,一是由於demo的變數命名問題,全是i,m,n,p什麼的;二就是對指標的使用生疏了。現在把改寫的demo記錄一下。。。
1: #include <stdio.h>
2: #include <stdlib.h>
3:
4: void Invert(int *pArray, int nCount) {
5: int *pHead = pArray;
6: int *pTail = pArray + nCount - 1;
7: int iTemp = 0;
8: while(pHead < pTail) {
9: iTemp = *pTail;
10: *pTail = *pHead;
11: *pHead = iTemp;
12: pHead++;
13: pTail--;
14: }
15: pHead = NULL;
16: pTail = NULL;
17: }
18:
19: int main(int argc, char *argv[]) {
20: int nCount = 0;
21: printf("\nEnter nCount: ");
22: scanf("%d", &nCount);
23: int *pArray = malloc(sizeof(int) * nCount);
24: int *pCounter = pArray;
25: printf("\nInput the original array:\n");
26: int i = 0;
27: for(; i<nCount; i++) {
28: scanf("%d", pCounter++);
29: }
30: printf("\nThe original array is: ");
31: pCounter = pArray;
32: for(i=0; i<nCount; i++) {
33: printf("%d ", *(pCounter++));
34: }
35: Invert(pArray, nCount);
36: printf("\nThe inverted array is: ");
37: for(i=0; i<nCount; i++) {
38: printf("%d ", *(pArray++));
39: }
40: pCounter = NULL;
41: free(pArray);
42: pArray = NULL;
43: return 0;
44: }