栈的基本操作(顺序栈)

栈的基本操作有栈的初始化、插入数据、删除数据以及遍历栈。

栈的特点是先进后出,因此先插入的数据在遍历的时候最后被输出。删除数据的时候,先删除后插入的数据。

如下图所示:

栈的基本操作(顺序栈)

结构体定义代码:(这是其中一种定义结构体的方法)

typedef struct Stack{
    int *top;
    int *bottom;
    int Stack_size;
}Stack;

相应的操作对应的代码为:

//初始栈

int InitStack(Stack *stack){
    stack->bottom=(int *)malloc(SIZE*sizeof(int));
    stack->top=stack->bottom;
    stack->Stack_size=SIZE;
    return OK;
}

//插入数据

int Push(Stack *stack,int data){
    if(stack->top-stack->bottom>=stack->Stack_size){
        printf("栈已满,不能插入数据");
    }
    *stack->top=data;
    stack->top++;
    return OK;
}

//删除数据

int Pop(Stack *stack){
    if(stack->bottom==stack->top){
        printf("栈为空,不能删除数据");
    }
    stack->top--;
    printf("%d\n",*stack->top);
    return OK;
}

//遍历栈

int print(Stack *stack)
{
    while(stack->bottom!=stack->top){
            stack->top--;
        printf("%d",*stack->top);
    }
    return OK;
}

完整代码为:

 1 #define OK 1
 2 #define ERROR 0
 3 #define SIZE 100
 4 typedef struct Stack{
 5     int *top;
 6     int *bottom;
 7     int Stack_size;
 8 }Stack;
 9 //初始栈
10 int InitStack(Stack *stack){
11     stack->bottom=(int *)malloc(SIZE*sizeof(int));
12     stack->top=stack->bottom;
13     stack->Stack_size=SIZE;
14     return OK;
15 }
16 //插入数据
17 int Push(Stack *stack,int data){
18     if(stack->top-stack->bottom>=stack->Stack_size){
19         printf("栈已满,不能插入数据");
20     }
21     *stack->top=data;
22     stack->top++;
23     return OK;
24 }
25 //删除数据
26 int Pop(Stack *stack){
27     if(stack->bottom==stack->top){
28         printf("栈为空,不能删除数据");
29     }
30     stack->top--;
31     printf("%d\n",*stack->top);
32     return OK;
33 }
34 //遍历栈
35 int print(Stack *stack)
36 {
37     while(stack->bottom!=stack->top){
38             stack->top--;
39         printf("%d",*stack->top);
40     }
41     return OK;
42 }
43 int main()
44 {
45     Stack a;
46     InitStack(&a);
47     Push(&a,1);
48     Push(&a,2);
49     Push(&a,3);
50     printf("删除的元素是:");
51     Pop(&a);
52     printf("剩余的元素是:");
53     print(&a);
54     return 0;
55 }

运行结果如图所示:

栈的基本操作(顺序栈)

 

上一篇:从零开始学CSS-position


下一篇:iOS社交app技术合伙人笔试题