栈
栈的结构比较简单,实现的过程中前面已经写好的线性表代码可以直接拿来用。只要在头文件中#include "seqlist.h"就可以了。
创建栈相当于创建线性表,销毁栈相当于销毁线性表。push相当于在线性表尾部插入元素,尾插法,pop相当于从线性表尾部拿出元素。
C语言代码:
main_seq_stack.c文件(上层应用)
1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "string.h" 4 #include "seq_stack.h" 5 void main() 6 { 7 int i = 0; 8 int a[10]; 9 SeqStack* stack = NULL; 10 int *pTmp = NULL; 11 stack = SeqStack_Create(10); 12 for (i = 0; i < SeqStack_Capacity(stack); i++) 13 { 14 a[i] = i + 1; 15 SeqStack_Push(stack, &a[i]); 16 } 17 printf("capacity:%d \n", SeqStack_Capacity(stack)); 18 printf("size:%d \n", SeqStack_Size(stack)); 19 pTmp = (int*)SeqStack_Top(stack); 20 printf("top:%d \n", *pTmp); 21 while (SeqStack_Size(stack) > 0) 22 { 23 printf("pop:%d \n", *((int *)SeqStack_Pop(stack))); 24 } 25 SeqStack_Destroy(stack); 26 system("pause"); 27 return; 28 }
seq_stack.h文件(头文件)
1 #ifndef _MY_SEQ_STACK_H_ 2 #define _MY_SEQ_STACK_H_ 3 typedef void SeqStack; 4 SeqStack* SeqStack_Create(int capacity); 5 void SeqStack_Destroy(SeqStack* list); 6 void SeqStack_Clear(SeqStack* list); 7 int SeqStack_Size(SeqStack* list); 8 int SeqStack_Capacity(SeqStack* list); 9 int SeqStack_Push(SeqStack* stack, void* item); 10 void* SeqStack_Pop(SeqStack* stack); 11 void* SeqStack_Top(SeqStack* stack); 12 #endif
seqlist.c文件(底层库实现)
#include "stdio.h" #include "stdlib.h" #include "string.h" #include "seq_stack.h" #include "seqlist.h" //创建栈相当于创建线性表 SeqStack* SeqStack_Create(int capacity) { return SeqList_Create(capacity); } //销毁栈相当于销毁线性表 void SeqStack_Destroy(SeqStack* stack) { SeqList_Destroy(stack); } void SeqStack_Clear(SeqStack* stack) { SeqList_Clear(stack); } int SeqStack_Size(SeqStack* stack) { return SeqList_Length(stack); } int SeqStack_Capacity(SeqStack* stack) { return SeqList_Capacity(stack); } //相当于在线性表尾部插入元素,尾插法 int SeqStack_Push(SeqStack* stack, void* item) { return SeqList_Insert(stack, item, SeqList_Length(stack)); } //相当于从线性表尾部拿出元素。 void* SeqStack_Pop(SeqStack* stack) { return SeqList_Delete(stack, SeqList_Length(stack) - 1); } void* SeqStack_Top(SeqStack* stack) { return SeqList_Get(stack, SeqList_Length(stack) - 1); }

浙公网安备 33010602011771号