Lecture 21 - Professor Lu (taught by Professor Elmqvist) - John Ribeiro
In order to think about recursion, think about the base case. Then move on to thinking about the recursive case
- Spending and Budgets helpful in understanding this concept
Linked Lists are resizable.
Node * List)insertFront ( Node * head, int value ) {
return Node_create(value, head);
}
void List_destroy ( Node * head ) {
while ( head != NULL ) { Node * temp = head; head = head->next; destroy ( temp ); }
}
Node * List_insertBack ( Node * head, int value ) {
Node * node = Node_create ( value, NULL ); if ( head == NULL ) { return node; } Node * curr = head; while ( curr->next != NULL ) { curr = curr -> next; } curr->next = node; return head;
}
Node * List_search ( Node * head, int v ) {
while ( head != NULL && head->value != v ) { head = head -> next; } return head;
}
Linked List does not support random access.
Lecture 21_3/29_Kailu Song void Node_destroy(Node *node) { free(node); }
Node *List_elementAt(Node *head, int index);
Node *List_search(Node *head, int v) { while(head != NULL && head -> value != v) { head = head -> next; } return head; }
Node *List_insertBack(Node *head, int value) { Node *node = Node_create(value,NULL); if (head == NULL){return node;} Node *curr = head; while(curr ->next != NULL) { curr= curr->next; } curr->next = node; return head; }
Node *List_insertFront(Node *head, int value) { return Node_create(value, head); }
void List_print(Node *head); { while (head != NULL) { printf("%d", head->value); head = head->next; } }
void List_destroy(Node *head); { while (head != NULL) { Node *tmp = head; head = head->next; Node_destroy(tmp); } }
int main(int argc, char *argv[]) { int i; Node *head = NULL; for (i=0;i<10;i++) { head = List_insertFront(head, i); } List_print(head); printf("value = %d", List_search(head,8)->value); List_destroy(head);
return EXIT_SUCCESS; }
ECE264 LEC20 Shiyu Wang April 1
4=[4]
=[3 1] =[1 3] =[2 1 1] =[1 2 1] =[1 1 2] =[1 1 1 1]
Void x(int *array, int budget, int pos) {
if(budget==0) { print return; } int spending; for(spending = 1; spending <= budget; spending++) { array[pos]=spending; x(array,budget,spending,pos+1); }
}
int main(int argc, char*argv[]) {
if( argc!=2) { return Exit_failure; } num = strtol......; . . .
}
int main {
int i; Node * head=BULL; for( i=0;i<6;i++) { head = List_insect(head,i); } List_print(head); List_destroy(head); return exit_success;
}
Node *Node_construct(int value ,Node* next) {
Node *node =malloc(sizeof(Node)); node->next=next; node->value = value; return node;
}
Node *List_insertfront(Node*head,int value) {
return Node_crest(value,head);
}
Void List_Print(Node*head) {
while(head!=NULL) { printf("%d\n",head->value); head=head->next; }
}
Void List_destroy(Node *head) {
while(head!=NULL) { Node *temp = head; head=head->next; Node_destroy(temp); } free;
}
Node* List_insertback(Node *head, int value) {
Node*node = Node_creat(value, NULL) if(head==NULL) { return node; } Node *arr =head; while(arr->next !=NULL) { arr = arr->next; } arr->next =node;
}
Node *List_search(Node *head, int v) {
while((head!=NULL) && (head->value != v)) { head=head->next; } return head;
}
/**************************************************
Huayi Guo Lecture 0330 by professor Niklas Elmqvist
/* lecture0330 ipa2-2
for the Unix and Window system the text files are different when there is a new line And that is important!!
- /
- include<math.h>
int main(int argc, char*argv[]) {
//check arguments //check input file to see if it is valid const int Data_size = 101; char buffer[Data_size], block[Data_size]; block[0] = '\0'; int muti_line =0; while (fgets(buffer, Date_size, f) != NULL){ if(buffer[strlen(buffer) - 1 ] == '\n')
buffer[strlen(buffer) - 1 ] ='\0'; if(strlen(buffer) ==0){ //found the end of the block if(){ printf("%s\n",blcok); } else{ int dim = sqrt(strlen(block)); int i,j; for(i =0;i < dim;i++) { for(j =0; j <dim; j++){ printf("%c".block[i*dim+j]); } printf("\n"); } } printf("\n"); block ='\0'; muti_line =0; }
else{
//found the data if(strlen(block) != 0) nuti_line = 1; strcpy(block+strlen(block),buffer); }
} fclose(f); return EXIT_SUCCESS;
}
/*
check if there's a \n at the end of the file
- /
===================
Kevin Tan(0023987592), section#1 notes 03/29
- include "ipa2.h"
Node *Node_construct(int v, Node *Next) {
Node *n;
n = malloc(sizeof(Node)); n->next = Next; n->value = v;
return n;
}
Node *List_insertFront(Node *head,int v) {
Node *n = Node_construct(v); n->next = head; return n;
}
Node *List_search(Node*head, int v) {
while ((head != NULL)&&(head->value)!=v) { head = head->next; } return head;
} Node *List_insertEnd(Node *h, int v) {
Node *n = Node_construct(v,NULL); if (h == NULL) { return n; } if(v<h->value){ n->next = h; return n; } Node *curr = h; while (curr->next != NULL && curr->next->value < v) { curr = curr->next; } n->next=curr->next; curr->next = n; return h;
}
Node *List_delete(Node *head, int del) {
if(head == NULL) { return NULL; } Node *p=head; if((head->value)== del) { p=head->next; free(head); return p; } Node *q=p->next; while((q!=NULL)&&(q->value)!=del) { p=q; q=q->next; } if(q!=NULL) { p->next=q->next; free (q); } return head;
}