首先问一个问题cpu是如何访问内存中的数据的呢cpu不能直接访问内存数据因为cpu太快了内存太慢了直接访问太影响效率了。操作系统会把内存中的数据压到cpu的内存缓存区中具体压多少数据要看硬件cpu在缓存区中拿到数据就是命中了。那么对于顺序表和链表在缓存利用率上就会有差别顺序表利用率高而链表利用率就会低一些因为在压数据时是成块压入的链表不是连续存储的在数据与数据之间会存在垃圾数据而顺序表的数据是连续存放的所以顺序表的缓存利用率要高一些而链表要低一些虽然有差距但是差距不是很大他的差距可能就像90分和80分的差距。那么我们回归到栈上来什么是栈呢栈是一种数据结构只允许在一端插入与删除遵循后进先出就是在删除数据时先删除最后存入的数据。需要实现哪些栈的接口呢void STackInit(ST*ps);//初始化void STPush(ST*ps);//压栈void STPop(ST*ps);//出栈void STDestory(ST*ps);//销毁栈STDataTyoe STTop(ST*ps);//获取栈顶元素int Size(ST*ps);//获取有效元素个数栈的数据结构应该如何定义呢typedef struct Stack{int*a;//我个人喜欢用顺序表来定义栈因为内存利用率高一些再一个就是对于栈我们只需要尾插和尾删就可以了用顺序表很舒服。int top//用top来访问栈顶元素来尾插和尾删int capacity//顺序表可以存放的元素个数}实现栈的注意事项q1.关于top我们初始化时因该赋值多少呢可以赋值0也可以赋值-1当热如果你想赋值多少都可以正如我老师所言要用筷子吃饭要注意的是如果要赋值-1的话就是栈顶元素如果赋值0的话就是栈顶的下一个元素。这里还要看是先加加还是后加加无论怎么搞核心是要弄清你希望top是栈顶还是栈顶的下一个根据个人喜欢来吧只要后续不出错用什么都可以。总结对于栈而言是一个相对简单的数据结构有后进先出的特点在插入和删除时固定一端。还有就是要想明白用什么为基础是用顺序表还是链表还有就是对于top的初始化赋值要注意他是栈顶元素还是栈底元素。欢迎访问我的Gitee 付信宇 (F19114020324) - Gitee.com以上为学生对知识的理解如有错误欢迎指正。感谢