CIS 1500 Chapter Notes - Chapter 11: C Dynamic Memory Allocation

31 views1 pages
#include <stdio.h>
#include <stdlib.h>
#include "vector.h"
// Initialize vector with specified size
void vector_create(vector* v, unsigned int size) {
int i;
if (v == NULL)
return;
v->elements = (int *)malloc(size * sizeof(int));
v->size = size;
for (i = 0; i < (v->size); ++i) {
v->elements[i] = 0;
}
}
// Destroy vector
void vector_destroy(vector* v) {
if (v == NULL)
return;
free(v->elements);
v->elements = NULL;
v->size = 0;
}
// Resize the size of the vector
void vector_resize(vector* v, unsigned int size) {
int oldSize = 0;
int i = 0;
if (v == NULL) return;
oldSize = v->size;
v->elements = (int*)realloc(v->elements, size * sizeof(int));
v->size = size;
for (i = oldSize; i < v->size; ++i) {
v->elements[i] = 0;
}
}
// Return pointer to element at specified index
int* vector_at(vector* v, unsigned int index) {
if (v == NULL || index >= v->size) return NULL;
return &(v->elements[index]);
}
// Insert new value at specified index
void vector_insert(vector* v, unsigned int index, int value) {
int i = 0;
if (v == NULL || index > v->size) return;
vector_resize(v, v->size + 1);
for (i = v->size - 1; i > index; --i) {
v->elements[i] = v->elements[i-1];
}
v->elements[index] = value;
}
// Insert new value at end of vector
void vector_push_back(vector* v, int value) {
vector_insert(v, v->size, value);
}
// Erase (remove) value at specified index
void vector_erase(vector* v, unsigned int index) {
int i = 0;
if (v == NULL || index >= v->size) return;
for (i = index; i < v->size - 1; ++i) {
v->elements[i] = v->elements[i+1];
}
vector_resize(v, v->size - 1);
}
// Return number of elements within vector
int vector_size(vector* v) {
if (v == NULL) return -1;
return v->size;
}
find more resources at oneclass.com
find more resources at oneclass.com
Unlock document

This preview shows half of the first page of the document.
Unlock all 1 pages and 3 million more documents.

Already have an account? Log in

Get access

Grade+20% off
$8 USD/m$10 USD/m
Billed $96 USD annually
Grade+
Homework Help
Study Guides
Textbook Solutions
Class Notes
Textbook Notes
Booster Class
40 Verified Answers
Class+
$8 USD/m
Billed $96 USD annually
Class+
Homework Help
Study Guides
Textbook Solutions
Class Notes
Textbook Notes
Booster Class
30 Verified Answers