需求描述:逆序打印单链表,不能修改链表结构,不能使用递归实现

需求分析:1、基于栈的先进后出特性,先将单链表的所有结点入栈

2、然后将栈中元素出栈即可

typedef struct LinkNode { int val; struct LinkNode* next; }LinkNode; // 创建单链表 void creatLinkList(LinkNode* head); // 逆序打印链表 - 基于栈 void linkListReversePrintBaseStack(LinkNode* node); int main() { //创建单链表 LinkNode* head = (LinkNode*)malloc(sizeof(LinkNode)); if(head == NULL) {exit(-1);} head->next = NULL; LinkNode* curr = head; creatLinkList(curr); //逆序打印链表 - 基于栈 linkListReversePrintBaseStack(head->next); printf("n"); return 0; } #pragma mark - 创建单链表 void creatLinkList(LinkNode* head) { for(int i = 0;i < 5;i++) { LinkNode* node = (LinkNode*)malloc(sizeof(LinkNode)); if(node == NULL) {exit(-1);} node->val = 100 * (i + 1); node->next = head->next; head->next = node; head = head->next; } } #pragma mark - 逆序打印链表 - 基于栈 void linkListReversePrintBaseStack(LinkNode* node) { int top = 0 , s[5]; while (node) { s[top++] = node->val; node = node->next; } while (top) { printf("%d ",s[--top]); } }