《算法导论》第十章----基本数据结构
2013-10-20 11:49
323 查看
《算法导论》学习记录目录
基本的数据结构是很基础的东西,而且运行时间也很容易看出来,所以本文也是简单地提及一些性质,主要还是通过一些练习来熟悉它们的性质。
(PS:无聊翻开TAOCP的第一卷,发现第二章也是讲一些数据结构,而且讲得很详细。如果明年年初计划可以完成,就应该开始看TAOCP,继续努力吧!)
栈
栈是先进后出(后进先出),就好像洗盘子的时候,你最先放的盘子在最底,下次拿出来洗,就是最后才拿出来。(例子举得有点搓。。。)
具体操作为进栈、出栈(也叫压入、弹出)。
因为是基于数组来实现栈,所以不仅仅要注意下溢(空栈出栈),还要注意上溢(满栈进栈)。
View Code
PS:还有一些练习没完成。。完成会不定期更新。。。。
还要继续努力,朝着目标进发!!!
基本的数据结构是很基础的东西,而且运行时间也很容易看出来,所以本文也是简单地提及一些性质,主要还是通过一些练习来熟悉它们的性质。
(PS:无聊翻开TAOCP的第一卷,发现第二章也是讲一些数据结构,而且讲得很详细。如果明年年初计划可以完成,就应该开始看TAOCP,继续努力吧!)
栈
栈是先进后出(后进先出),就好像洗盘子的时候,你最先放的盘子在最底,下次拿出来洗,就是最后才拿出来。(例子举得有点搓。。。)
具体操作为进栈、出栈(也叫压入、弹出)。
因为是基于数组来实现栈,所以不仅仅要注意下溢(空栈出栈),还要注意上溢(满栈进栈)。
#include <stdio.h> #include <stdlib.h> typedef struct ListNode{ int value; struct ListNode * next; }ListNode; typedef struct { ListNode * top; }Stack; void list_insert(ListNode *l , int x); void print_list(ListNode *l); int stack_empty(Stack *S); void push(Stack *S, int x); int pop(Stack *S); int main(){ int i, num; Stack * S; S = (Stack *)malloc(sizeof(Stack)); S->top = (ListNode *)malloc(sizeof(ListNode)); for(i = 1; i <= 5; i++){ scanf("%d", &num); push(S, num); } //printf("%d\n", stack_empty(S)); //print_list(S->top); for(i = 1; i<= 5; i++) printf("%d ", pop(S)); printf("\n"); return 0; } void list_insert(ListNode *l, int x){ ListNode * p; p = (ListNode *)malloc(sizeof(ListNode)); p->value = x; if(l->next == NULL){ l->next = p; p->next = NULL; } else{ p->next = l->next; } l->next = p; } void print_list(ListNode *l){ ListNode * p = l->next; while(p != NULL){ printf("%d ", p->value); p = p->next; } printf("\n"); } int stack_empty(Stack *S){ if(S->top->next == NULL) return 1; else return 0; } void push(Stack *S, int x){ list_insert(S->top, x); } int pop(Stack *S){ if(stack_empty(S)){ printf("underflow\n"); return ; } else{ ListNode *p = S->top->next; int x = p->value; S->top->next = p->next; free(p); return x; } }
View Code
PS:还有一些练习没完成。。完成会不定期更新。。。。
还要继续努力,朝着目标进发!!!
相关文章推荐
- 2013-10-20-数据结构----今天北京马拉松哟~~~
- C语言数据结构单链表的一些基本操作
- 红黑树,这真的是比较全的内容介绍
- 如何构建平衡二叉树(AVL树)
- ffmpeg常用数据结构
- 微软公司等数据结构+算法面试100题(第1-100题)全部出炉
- 01数据结构概述(郝斌数据结构)
- 冒泡、插入、希尔和快速排序算法
- 数据结构与算法实验课--链表
- 算法与数据结构(二):排序
- 算法数据结构C++实现7 - 同时查找最大值和最小值优化算法
- [数据结构]程杰字符串的基本操作代码
- 异或指针双链表的创建、打印(严奶奶数据结构练习2.34)
- 有关栈的数据结构的实现
- (c语言)二叉树中序线索(数据结构十七)
- (c语言)二叉树中序线索(数据结构十七)
- 数据结构---------循环队列与链式队列
- (C语言)二叉树层次遍历(数据结构十六)
- (C语言)二叉树层次遍历(数据结构十六)
- poj1611-The Suspects--并查集