implements the q operations
This commit is contained in:
@@ -5,12 +5,12 @@
|
|||||||
typedef struct QNode {
|
typedef struct QNode {
|
||||||
int value;
|
int value;
|
||||||
struct QNode* next;
|
struct QNode* next;
|
||||||
struct QNode* prev;
|
|
||||||
} QNode;
|
} QNode;
|
||||||
|
|
||||||
typedef struct Q {
|
typedef struct Q {
|
||||||
QNode* head;
|
QNode* head;
|
||||||
QNode* tail;
|
QNode* tail;
|
||||||
|
int length;
|
||||||
} Q;
|
} Q;
|
||||||
|
|
||||||
typedef struct TreeNode {
|
typedef struct TreeNode {
|
||||||
@@ -35,7 +35,6 @@ TreeNode* new_tree_node(int value) {
|
|||||||
QNode* new_qnode(int value) {
|
QNode* new_qnode(int value) {
|
||||||
QNode* node = malloc(sizeof(QNode));
|
QNode* node = malloc(sizeof(QNode));
|
||||||
node->next = NULL;
|
node->next = NULL;
|
||||||
node->prev = NULL;
|
|
||||||
node->value = value;
|
node->value = value;
|
||||||
|
|
||||||
return (node);
|
return (node);
|
||||||
@@ -65,6 +64,26 @@ void add_child_right(TreeNode* parent, TreeNode* node) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// always add at tail
|
||||||
|
void q_add_node(Q* q, QNode* node) {
|
||||||
|
if (q->length == 0) {
|
||||||
|
q->head = node;
|
||||||
|
q->tail = node;
|
||||||
|
q->length++;
|
||||||
|
} else {
|
||||||
|
q->tail->next = node;
|
||||||
|
q->tail = node;
|
||||||
|
q->length++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// always remove from head
|
||||||
|
void q_remove_node(Q* q) {
|
||||||
|
QNode* n = q->head;
|
||||||
|
q->head = n->next;
|
||||||
|
free(n);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
10
|
10
|
||||||
5 7
|
5 7
|
||||||
@@ -84,4 +103,4 @@ int main() {
|
|||||||
|
|
||||||
add_child_left(root->right, new_tree_node(88));
|
add_child_left(root->right, new_tree_node(88));
|
||||||
add_child_right(root->right, new_tree_node(14));
|
add_child_right(root->right, new_tree_node(14));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user