棧的順序儲存

2021-08-18 02:07:59 字數 2294 閱讀 2568

# ifndef seqstack_h

# define seqstack_h

# include # include # include //陣列去模擬棧的順序儲存

# define max_size 1024

# define seqstack_true 1

# define seqstack_false 0

typedef struct seqstack

seqstack;

//初始化

seqstack* init_seqstack();

//入棧

void push_seqstack(seqstack* stack, void* data);

//返回棧頂元素

void* top_seqstack(seqstack* stack);

//出棧

void pop_seqstack(seqstack* stack);

//判斷是否為空

int isempty(seqstack* stack);

//返回棧中元素的個數

int size_seqstack(seqstack* stack);

//清空棧

void clear_seqstack();

//銷毀

void freespace_seqstack(seqstack* stack);

# endif

# include "seqstack.h"

//初始化

seqstack* init_seqstack()

stack->size = 0;

// printf( "---\n");

return stack;

}//入棧

void push_seqstack(seqstack* stack, void* data)

if(stack == null)

if(data == null)

stack->data[stack->size] = data;

stack->size++;

}//返回棧頂元素

void* top_seqstack(seqstack* stack)

if(stack->size == 0)

return stack->data[stack->size - 1];

}//出棧

void pop_seqstack(seqstack* stack)

if(stack->size == 0)

stack->data[stack->size - 1] = null;

stack->size--;

}//判斷是否為空

int isempty(seqstack* stack)

if(stack->size == 0)

return seqstack_false;

}//返回棧中元素的個數

int size_seqstack(seqstack* stack)

//清空棧

void clear_seqstack(seqstack* stack)

for(int i = 0; i < stack->size; i++)

stack->size = 0;

}//銷毀

void freespace_seqstack(seqstack* stack)

free(stack);

}# include "seqstack.h"

typedef struct person

person;

void test01()

; person p2 = ;

person p3 = ;

person p4 = ;

person p5 = ;

//入棧

push_seqstack(stack, &p1);

push_seqstack(stack, &p2);

push_seqstack(stack, &p3);

push_seqstack(stack, &p4);

push_seqstack(stack, &p5);

//輸出

while(size_seqstack(stack) )

//釋放記憶體

棧的順序儲存

棧的順序儲存就是用連續的空間儲存棧中的結點,一般都是用陣列來實現這種連續空間的。為了保證棧的filo特點,所以進棧出棧總是在棧頂一端進行。因此,不會引起類似順序表中的大量資料的移動。用陣列實現棧結構時,棧底bottom可取下標為0的陣列元素,假定用top給出棧頂元素的下標位址,即棧頂指標,那麼初始化...

棧的順序儲存

seqstack.h pragma once include include include ifdef cplusplus extern c typedef void seqstack 使用陣列高下標的位置作為棧頂,因為插入和刪除操作中不需要移動陣列中的元素 初始化 seqstack init s...

棧的順序儲存

可以用陣列來表示棧的結構。定義乙個結構體,其中有乙個陣列,動態分配記憶體。top記錄棧頂。標頭檔案 ifndef head h define head h define minsize 5 定義最小長度為5 define empty 1 棧空情況 typedef int elementtype ty...