Untitled
unknown
c_cpp
4 years ago
2.3 kB
6
Indexable
/*************************************
* Lab 1 Exercise 3
* Name: WANG HUILIN
* Student No: A0219760B
* Lab Group: T01
*************************************/
#include <stdio.h>
#include <stdlib.h>
#include "function_pointers.h"
#include "node.h"
// The runner is empty now! Modify it to fulfill the requirements of the
// exercise. You can use ex2.c as a template
// DO NOT initialize the func_list array in this file. All initialization
// logic for func_list should go into function_pointers.c.
// Macros
#define SUM_LIST 0
#define INSERT_AT 1
#define DELETE_AT 2
#define ROTATE_LIST 3
#define REVERSE_LIST 4
#define RESET_LIST 5
#define MAP 6
void run_instruction(list *lst, int instr);
int main(int argc, char **argv) {
if (argc != 2) {
fprintf(stderr, "Error: expecting 1 argument, %d found\n", argc - 1);
exit(1);
}
// We read in the file name provided as argument
char *fname = argv[1];
// Update the array of function pointers
// DO NOT REMOVE THIS CALL
// (You may leave the function empty if you do not need it)
update_functions();
FILE *fp;
fp = freopen(fname, "r", stdin);
list *lst = (list *)malloc(sizeof(list));
lst->head = NULL;
if(fp == NULL){
return 0;
}
int instr;
while (scanf("%d", &instr) != EOF) {
run_instruction(lst, instr);
}
fclose(fp);
reset_list(lst);
free(lst);
// Rest of code logic here
}
void run_instruction(list *lst, int instr) {
int index, data, offset, sum;
switch (instr) {
case SUM_LIST:
sum = sum_list(lst);
printf("%d", sum);
break;
case INSERT_AT:
scanf("%d %d", &index, &data);
insert_node_at(lst, index, data);
break;
case DELETE_AT:
scanf("%d", &index);
delete_node_at(lst, index);
break;
case ROTATE_LIST:
scanf("%d", &offset);
rotate_list(lst, offset);
break;
case REVERSE_LIST:
reverse_list(lst);
break;
case RESET_LIST:
reset_list(lst);
break;
case MAP:
scanf("%d", &index);
map(lst, func_list[index]);
}
}
Editor is loading...