lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) {...
Transcript of lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) {...
![Page 1: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/1.jpg)
![Page 2: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/2.jpg)
![Page 3: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/3.jpg)
![Page 4: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/4.jpg)
typedefstruct{stringname;stringdorm;}student;
![Page 5: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/5.jpg)
![Page 6: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/6.jpg)
![Page 7: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/7.jpg)
environment variables
stack
uninitialized data
heap
![Page 8: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/8.jpg)
environment variables
stack
uninitialized data
initialized data
text
heap
![Page 9: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/9.jpg)
voidswap(inta,intb){inttmp=a;a=b;b=tmp;}
![Page 10: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/10.jpg)
voidswap(int*a,int*b){inttmp=*a;*a=*b;*b=tmp;}
![Page 11: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/11.jpg)
malloc
free
![Page 12: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/12.jpg)
malloc,calloc,realloc
free
![Page 13: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/13.jpg)
![Page 14: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/14.jpg)
intmain(void){int*x;int*y;x=malloc(sizeof(int));*x=42;*y=13;y=x;*y=13;}
![Page 15: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/15.jpg)
![Page 16: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/16.jpg)
![Page 17: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/17.jpg)
![Page 18: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/18.jpg)
![Page 19: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/19.jpg)
![Page 20: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/20.jpg)
![Page 21: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/21.jpg)
![Page 22: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/22.jpg)
stack overflow
heap overflow
![Page 23: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/23.jpg)
buffer overflow
![Page 24: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/24.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 25: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/25.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 26: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/26.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 27: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/27.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 28: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/28.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 29: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/29.jpg)
#include<string.h>voidfoo(char*bar){charc[12];memcpy(c,bar,strlen(bar));}intmain(intargc,char*argv[]){foo(argv[1]);}
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 30: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/30.jpg)
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 31: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/31.jpg)
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 32: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/32.jpg)
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 33: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/33.jpg)
adapted from wikipedia.org/wiki/Stack_buffer_overflow
![Page 34: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/34.jpg)
valgrind
![Page 35: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/35.jpg)
255216255
![Page 36: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/36.jpg)
0xff0xd80xff
![Page 37: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/37.jpg)
http://xkcd.com/138/
![Page 38: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/38.jpg)
debug50
![Page 39: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/39.jpg)
ddb50
![Page 40: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/40.jpg)
![Page 41: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/41.jpg)
![Page 42: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/42.jpg)
environment variables
stack
uninitialized data
heap
![Page 43: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/43.jpg)
![Page 44: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/44.jpg)
https://cs.calvin.edu/activities/books/c++/ds/1e/
![Page 45: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/45.jpg)
http://cs.calvin.edu/books/c++/ds/1e/
![Page 46: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/46.jpg)
typedefstruct{stringname;stringdorm;}student;
![Page 47: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/47.jpg)
typedefstructnode{intn;structnode*next;}node;
![Page 48: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/48.jpg)
https://cs.calvin.edu/activities/books/c++/ds/1e/
![Page 49: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/49.jpg)
![Page 50: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/50.jpg)
push
pop
...
![Page 51: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/51.jpg)
typedefstruct{intnumbers[CAPACITY];intsize;}stack;
![Page 52: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/52.jpg)
typedefstruct{int*numbers;intsize;}stack;
![Page 53: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/53.jpg)
![Page 54: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/54.jpg)
enqueue
dequeue
...
![Page 55: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/55.jpg)
typedefstruct{intfront;intnumbers[CAPACITY];intsize;}queue;
![Page 56: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/56.jpg)
typedefstruct{intfront;int*numbers;intsize;}queue;
![Page 57: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/57.jpg)
![Page 59: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/59.jpg)
22 33 44 55 66 77 88
![Page 60: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/60.jpg)
22 33 44 55 66 77 88
![Page 61: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/61.jpg)
Figure from http://cs.calvin.edu/books/c++/ds/1e/.
binary search tree
![Page 62: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/62.jpg)
typedefstructnode{intn;structnode*left;structnode*right;}node;
![Page 63: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/63.jpg)
boolsearch(intn,node*tree){if(tree==NULL){returnfalse;}elseif(n<tree->n){returnsearch(n,tree->left);}elseif(n>tree->n){returnsearch(n,tree->right);}else{returntrue;}}
![Page 64: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/64.jpg)
boolsearch(intn,node*tree){if(tree==NULL){returnfalse;}elseif(n<tree->n){returnsearch(n,tree->left);}elseif(n>tree->n){returnsearch(n,tree->right);}else{returntrue;}}
![Page 65: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/65.jpg)
boolsearch(intn,node*tree){if(tree==NULL){returnfalse;}elseif(n<tree->n){returnsearch(n,tree->left);}elseif(n>tree->n){returnsearch(n,tree->right);}else{returntrue;}}
![Page 66: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/66.jpg)
boolsearch(intn,node*tree){if(tree==NULL){returnfalse;}elseif(n<tree->n){returnsearch(n,tree->left);}elseif(n>tree->n){returnsearch(n,tree->right);}else{returntrue;}}
![Page 67: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/67.jpg)
boolsearch(intn,node*tree){if(tree==NULL){returnfalse;}elseif(n<tree->n){returnsearch(n,tree->left);}elseif(n>tree->n){returnsearch(n,tree->right);}else{returntrue;}}
![Page 68: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/68.jpg)
O(n2) O(n log n) O(n) O(log n) O(1) …
![Page 69: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/69.jpg)
O(n2) O(n log n) O(n) O(log n) O(1) …
![Page 70: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/70.jpg)
O(n2) O(n log n) O(n) O(log n) O(1) …
![Page 71: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/71.jpg)
wikipedia.org
![Page 72: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/72.jpg)
![Page 73: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/73.jpg)
![Page 74: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/74.jpg)
Figure from Lewis and Denenberg’s Data Structures & Their Algorithms.
![Page 75: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/75.jpg)
typedefstructnode{boolword;structnode*children[27];}node;
![Page 76: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/76.jpg)
![Page 77: lecture5 - CS50cdn.cs50.net/2017/fall/lectures/5/lecture5.pdf · #include void foo(char *bar) { char c[12]; memcpy(c, bar, strlen(bar)); } int main(int argc, char](https://reader034.fdocuments.in/reader034/viewer/2022051810/6016644e867a4a470a24ced2/html5/thumbnails/77.jpg)