int *p[10]; //包含指针的数组
int (*p)[10]; //指向数组的指针p[0]居然是一个数组int[10], 着实难以理解
struct stNode{
stNode(int n){
nValue = n;
pNext=NULL;
}
int nValue;
stNode* pNext;
};
//非递归
stNode* Reverse1(stNode* pN){
if(pN == NULL|| pN->pNext == NULL){
return pN;
}
stNode* pPre = pN;
pN = pN->pNext;
stNode* pNext = pN->pNext;
pPre->pNext = NULL;
while(pN->pNext != NULL){
pN->pNext = pPre;
pPre = pN;
pN = pNext;
pNext = pN->pNext;
}
pN->pNext = pPre;
return pN;
}
//递归
stNode* Reverse2(stNode* pN){
static stNode* pHead = pN;
static stNode* pNewHead = NULL;
if(pN==NULL){
;
}else if(pN->pNext==NULL){
pNewHead = pN;
}else{
stNode* pNew = Reverse(pN->pNext);
pNew->pNext = pN;
}
if(pN == pHead){
pHead->pNext = NULL;
return pNewHead;
}
return pN;
}
int main() {
stNode* pHead = new stNode(1);
pHead->pNext = new stNode(2);
pHead->pNext->pNext = new stNode(3);
pHead->pNext->pNext->pNext = new stNode(4);
stNode* pResult = Reverse2(pHead);
return 0;
}