非递归 逆序打印单链表

需求描述:逆序打印单链表,不能修改链表结构,不能使用递归实现
需求分析: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 * (i1);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]);}}

相关经验推荐