剑指offer 面试题5 从尾到头打印链表(栈实现)
来源:互联网 发布:netcat端口转发 编辑:程序博客网 时间:2024/05/16 07:48
E:\arithmetic\ReverseLink
O(n)
栈实现
//main.c reverseLink 栈实现 #include <stdio.h>#include "Stack.h"#include "Link.h"void Reverse(Node *head);int main(int argc, char *argv[]){ //测试用例: 多节点 单节点 NULL int a[] = {1,2,3,4,5,6,7,8,9,0}; int b[] = {1} ; Node *link1 = NULL; int i; for(i=0 ; i<10 ; i++){ addToLink(&link1, a[i]); } printLink(link1); Reverse(link1); Node *link2 = NULL; Reverse(link2); addToLink(&link2, a[0]); printLink(link2); Reverse(link2); return 0;}void Reverse(Node *head){ Stack *s; s = createStack(); Node *t = head; if(head == NULL){ printf("reversr failed! NodeLink is NULL!\n"); return; } while(t != NULL){ pushStack(s, t->value); t = t->next; } int num; while(!isEmpty(s)){ num = popStack(s); printf("%d\t", num); } printf("\n");}
//stack.h#ifndef STACK_H_H#define STACK_H_H#include <stdio.h>#include <stdlib.h>//molloc free#include "Link.h"/*typedef struct LinkNode {int value;struct LinkNode *next;}Node, *NodeLink;*/typedef struct NodeStack{Node *top;}Stack;Stack* createStack();int isEmpty(Stack *s);void pushStack(Stack *s, int n);int popStack(Stack *s);void printStack(Stack *s);#endif
//stack.c#include "Stack.h"Stack* createStack(){Stack *s = malloc(sizeof(Stack));s->top = NULL;return s;}int isEmpty(Stack *s){return s->top==NULL ? 1:0;}void pushStack(Stack *s, int n){Node *t = malloc(sizeof(Node));t->value = n;t->next = s->top;s->top = t;}int popStack(Stack *s){if(isEmpty(s)){printf("Stack is empty! quit!\n");return -1;//??}int n = s->top->value;Node *t = s->top;s->top= t->next;free(t);return n; }void printStack(Stack *s){Node *t = s->top;while(t != NULL){printf("%d\t", t->value);t = t->next;}}
#ifndef LINK_H_H#define LINK_H_H#include <stdio.h>#include <stdlib.h>//molloc freetypedef struct LinkNode {int value;struct LinkNode *next;}Node;void printLink(struct LinkNode *head);void addToLink(struct LinkNode **head, int value);void deleteLink(struct LinkNode **head, int value);#endif
0 0
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- 剑指offer 面试题5 从尾到头打印链表(递归实现)
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 剑指offer|面试题5:从尾到头打印链表(Java实现)
- 剑指offer面试题5 从尾到头打印链表(java实现)
- 剑指offer--面试题5:从尾到头打印链表--Java实现
- 《剑指Offer》面试题:从尾到头打印链表
- 剑指offer面试题 从尾到头打印链表
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 剑指Offer面试题5(Java版):从尾到头打印链表
- 剑指offer|面试题5:从尾到头打印链表(Java代码)
- 剑指offer-面试题5-从尾到头打印列表
- 面试题6:从尾到头打印链表(offer)
- 剑指offer面试题5——链表之从尾到头打印链表
- 剑指offer-->面试题5 从尾到头打印链表
- [剑指offer][面试题5]从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表 java
- Where is sys/types.h located?
- 渗透测试中的冷却启动攻击和其他取证技术
- 一些数据库端口记录和各种各样的端口
- Tokyo Tyrant(TTServer)系列(一)-介绍和安装
- 06-MYSQL数据类型 日期 字符串
- 剑指offer 面试题5 从尾到头打印链表(栈实现)
- switch语句
- java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片
- AcEd库概述
- IT人生 需要指引
- 拖曳QTextEdit QListWidget
- 07-创建数据库
- Android 广告植入 简例
- 使用点对点测速工具了解局域网性能