progress on desktop

This commit is contained in:
2023-02-18 15:44:55 -06:00
parent 7879affd21
commit 60261c73cd
9 changed files with 206 additions and 17 deletions

View File

@@ -7,7 +7,7 @@
typedef struct node {
int value;
struct node* next;
struct node *next;
} node;
typedef struct stackm {
@@ -16,63 +16,134 @@ typedef struct stackm {
void smInit(struct stackm *myStack){
(myStack->top) = NULL;
myStack->top = NULL;
}
int smSize(struct stackm *myStack){
while(myStack->top->next != NULL) {
node *current = myStack->top;
int count = 0;
while(current != NULL) {
count++;
current = current->next;
}
return myStack->top;
return count;
}
int smPush(struct stackm *myStack, int toStore){
node node;
node.value = toStore;
*(myStack->top->next) = node;
node *newNode = (node *)malloc(sizeof(node));
if (newNode == NULL) {
return 0;
} else {
newNode->value = toStore;
newNode->next = myStack->top;
myStack->top = newNode;
return 1;
}
}
int smPop(struct stackm *myStack){
if(myStack->top == NULL) {
return 0;
}
node *temp = myStack->top;
myStack->top = temp->next;
free(temp);
return 1;
}
int smTop(struct stackm *myStack, int* toStore){
if (myStack->top == NULL || toStore == NULL) {
return 0;
} else {
toStore = (int*)myStack->top;
return 1;
}
}
void smClear(struct stackm *myStack){
while (myStack->top != NULL) {
node *temp = myStack->top;
myStack->top = temp->next;
free(temp);
}
}
void smPrint(struct stackm *myStack){
node *temp = myStack->top;
printf("==Stack Contents==\n");
printf("Top -> ");
while (temp != NULL) {
printf("%d ", temp->value);
temp = temp->next;
printf("\n");
}
}
int smAdd(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int sum = (myStack->top->value) + (myStack->top->next->value);
smPush(myStack,sum);
return 1;
}
}
int smSub(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int result = (myStack->top->value) - (myStack->top->next->value);
smPop(myStack);
smPop(myStack);
smPush(myStack,result);
return 1;
}
}
int smMult(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int sum = (myStack->top->value) * (myStack->top->next->value);
smPush(myStack,sum);
return 1;
}
}
int smRotate(struct stackm* myStack, int depth){
if(depth == 0){
return 0;
} else {
node *temp = myStack->top;
int count = 1;
while (count < depth && temp != NULL) {
temp = temp->next;
count++;
}
if (temp == NULL) {
return 0;
}
node *nNode = temp;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = myStack->top;
myStack->top = nNode->next;
nNode->next = NULL;
return 1;
}
}
#endif