数组反转(下)

来源:互联网 发布:无线wifi破解软件 编辑:程序博客网 时间:2024/04/27 15:40

我在数组反转(上)中已经提到了样例程序。现在我们就要实现。

首先来说头文件。其实在样例程序中我最初是不打算使用头文件的。但是因为不用头文件,实现函数的时候就必须算好次序,很烦,因此我就使用头文件了。头文件中定义了我们要用的几个函数。

#ifndef reversingArray_main_h#define reversingArray_main_hvoid pushToStack(int pushing);int popFromStack();void reverseByStack();void reverse();void init();#endif

好了。如果看过上集和中集的话,应该知道这几个函数是干什么的。如果不知道,可以去看一看上集和中集。

之后便是主程序。

#include <stdio.h>#include <memory.h>#include "main.h"int array[10] = {0,1,2,3,4,5,6,7,8,9};typedef struct stack{    int data[10];    int top;}REVSTACK;REVSTACK stack;void init(){    stack.top = -1;}void reverseByStack(){    for (int i = 0;i < 10;++i)    {        pushToStack(array[i]);    }    memset(array,0,sizeof(array));    for (int i = 0;i < 10;++i)array[i] = popFromStack();    for (int i = 0;i < 10;++i)printf("%d ",array[i]);    }void reverse(){    for (int i = 0;i < 5;++i)    {        int temp = array[i];        array[i] = array[9-i];        array[9-i] = temp;    }    printf("\n");    for (int i = 0;i < 10;++i)printf("%d ",array[i]);}void pushToStack(int pushing){    stack.top++;    stack.data[stack.top] = pushing;}int popFromStack(){    int retVal = stack.data[stack.top];    stack.top--;    return retVal;}int main(int argc, const char * argv[]){    init();    reverseByStack();    reverse();    return 0;}

上集和中集中reverse和reverseByStack这两个函数便是从这样例程序中摘过来的。这两个函数都没有参数。如果要设计成通用的,需要修改定义+代码。

运行结果如下:

9 8 7 6 5 4 3 2 1 0

0 1 2 3 4 5 6 7 8 9


原创粉丝点击