diff --git a/run b/run index 620cda8..418abdc 100755 --- a/run +++ b/run @@ -7,4 +7,4 @@ rm -r single.bin -gcc work1/q1.c -o single.bin && ./single.bin \ No newline at end of file +gcc work1/q2.c -o single.bin && ./single.bin \ No newline at end of file diff --git a/work1/q2.c b/work1/q2.c index 9908791..367291d 100644 --- a/work1/q2.c +++ b/work1/q2.c @@ -2,8 +2,82 @@ #include "stdlib.h" #include "string.h" -int main() { +#define STUDENT_ID_SIZE 10 +#define CHAR_INT '0' + +struct studentID +{ + int value; + struct studentID *next; +}; + +typedef struct studentID STUDENTID; +typedef STUDENTID *STUDENTIDPtr; + +int main() +{ + + const char student_id[] = "1001245345"; + + // printf("Student ID: %s\n", student_id); + + // memcpy(five_digits, &student_id[5], 5); + // five_digits[5] = '\0'; + + // creation nodes + size_t student_id_len = sizeof(student_id) / sizeof(student_id[0]) - 1; + + STUDENTIDPtr student_ptr_1 = (STUDENTIDPtr)malloc(sizeof(STUDENTID)); + STUDENTIDPtr student_ptr_2 = (STUDENTIDPtr)malloc(sizeof(STUDENTID)); + STUDENTIDPtr student_ptr_3 = (STUDENTIDPtr)malloc(sizeof(STUDENTID)); + STUDENTIDPtr student_ptr_4 = (STUDENTIDPtr)malloc(sizeof(STUDENTID)); + STUDENTIDPtr student_ptr_5 = (STUDENTIDPtr)malloc(sizeof(STUDENTID)); + + student_ptr_1->next = student_ptr_2; + student_ptr_2->next = student_ptr_3; + student_ptr_3->next = student_ptr_4; + student_ptr_4->next = student_ptr_5; + student_ptr_5->next = NULL; + + // fill the node's values + STUDENTIDPtr temp = student_ptr_1; + int last_len = 5; + while (temp != NULL) + { + temp->value = student_id[student_id_len - last_len] - CHAR_INT; + temp = temp->next; + last_len--; + } + + // removes dup + STUDENTIDPtr temp1, temp2, duplicate; + temp1 = student_ptr_1; + + while (temp1 != NULL && temp1->next != NULL) + { + temp2 = temp1; + + while (temp2->next != NULL) + { + if (temp1->value == temp2->next->value) + { + duplicate = temp2->next; + temp2->next = temp2->next->next; + free(duplicate); + } + else + temp2 = temp2->next; + } + temp1 = temp1->next; + } + + while (student_ptr_1 != NULL) + { + printf("%d ", student_ptr_1->value); + student_ptr_1 = student_ptr_1->next; + } + + printf("\n"); - return EXIT_SUCCESS; -} \ No newline at end of file +}