- 栈的基本操作
注意:是从后往前连接的
1 #include2 #include 3 typedef struct sStack 4 { 5 int num; 6 struct sStack* pnext; 7 }Stack; 8 void push(Stack **pStack,int num); 9 int pop(Stack **pStack);10 BOOL isEmpty(Stack *pStack);11 12 int main()13 {14 Stack* pStack = NULL;15 push(&pStack,1);16 push(&pStack,2);17 push(&pStack,3);18 printf("%d\n",pop(&pStack));19 printf("%d\n",pop(&pStack));20 printf("%d\n",pop(&pStack));21 printf("%d\n",pop(&pStack));22 if( isEmpty(pStack))23 printf("栈为空\n");24 return 0;25 }26 void push(Stack **pStack,int num)27 {28 Stack* stack = (Stack*)malloc(sizeof(Stack));29 stack->num = num;30 stack->pnext = NULL;31 32 stack->pnext = *pStack;33 *pStack = stack;34 //不需要判断栈是否为空,直接push就好35 }36 int pop(Stack **pStack)37 {38 int a = 0;39 Stack* temp;40 if(isEmpty( *pStack))41 return -1;42 a = (*pStack)->num;43 temp = *pStack;44 (*pStack) = (*pStack)->pnext;45 free(temp);//弹出之后要删除46 return a;47 }48 BOOL isEmpty(Stack *pStack)49 {50 if(pStack == NULL)51 return TRUE;52 else 53 return FALSE;54 }基本操作
- 递归
1 #include2 int JIECHENG(int); 3 void Out(int,int ); 4 int main() 5 { 6 printf("%d\n",JIECHENG(5)); 7 Out(1,4); 8 return 0; 9 }10 int JIECHENG(int num)11 {12 if(num == 1)13 {14 return 1;15 }16 else return num*JIECHENG(num-1);17 }18 void Out(int begin,int end)19 {20 if(begin <= end)21 {22 printf("%d\n",begin);23 Out(begin+1,end);24 printf("%d\n",begin);25 }26 }