SinglyLinkedListNode* deleteNode(SinglyLinkedListNode* llist, int position) {
SinglyLinkedListNode* newnode=(SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode));
SinglyLinkedListNode* temp=(SinglyLinkedListNode*)malloc(sizeof(SinglyLinkedListNode));
newnode=llist;
if(llist==NULL){
return NULL;
}
else{
for(int i=0;i<=position;i++){
if(position==0){
llist=llist->next;
}
else if(i==position-1){
newnode->next=newnode->next->next;
}
else{
newnode=newnode->next;
}
}
return llist;
}
}
int main()
{
FILE* fptr = fopen(getenv("OUTPUT_PATH"), "w");
SinglyLinkedList* llist = malloc(sizeof(SinglyLinkedList));
llist->head = NULL;
llist->tail = NULL;
char* llist_count_endptr;
char* llist_count_str = readline();
int llist_count = strtol(llist_count_str, &llist_count_endptr, 10);
if (llist_count_endptr == llist_count_str || *llist_count_endptr != '\0') { exit(EXIT_FAILURE); }
for (int i = 0; i < llist_count; i++) {
char* llist_item_endptr;
char* llist_item_str = readline();
int llist_item = strtol(llist_item_str, &llist_item_endptr, 10);
if (llist_item_endptr == llist_item_str || *llist_item_endptr != '\0') { exit(EXIT_FAILURE); }
insert_node_into_singly_linked_list(&llist, llist_item);
}
char* position_endptr;
char* position_str = readline();
int position = strtol(position_str, &position_endptr, 10);
if (position_endptr == position_str || *position_endptr != '\0') { exit(EXIT_FAILURE); }
SinglyLinkedListNode* llist1 = deleteNode(llist->head, position);
char *sep = " ";
print_singly_linked_list(llist1, sep, fptr);
fprintf(fptr, "\n");
free_singly_linked_list(llist1);
fclose(fptr);
return 0;
}
char* readline() {
size_t alloc_length = 1024;
size_t data_length = 0;
char* data = malloc(alloc_length);
while (true) {
char* cursor = data + data_length;
char* line = fgets(cursor, alloc_length - data_length, stdin);
if (!line) { break; }
data_length += strlen(cursor);
if (data_length < alloc_length - 1 || data[data_length - 1] == '\n') { break; }
size_t new_length = alloc_length << 1;
data = realloc(data, new_length);
if (!data) { break; }
alloc_length = new_length;
}
if (data[data_length - 1] == '\n') {
data[data_length - 1] = '\0';
}
data = realloc(data, data_length);
return data;
}
Comments
Post a Comment