Привет! Я создал программу, которая принимает на вход целое число и сохраняет их в списке. После сохранения этих данных в списке запрашивается номер x
. Чем я должен удалить все число, которое recurse> = чем x
, вот как я это сделал, но ничего не удаляется, и я не могу понять, почему. Представьте себе список из 8-> 5-> 8-> 4-> 8, если x
равно 3, напечатанный список должен 5-> 4
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int val;
struct Node *next;
} node;
void prin(node *head);
void modify(node *head, int x);
int main(){
node *head = NULL;
head = (node *)malloc(sizeof(node));
node *temp = head;
printf("Write the value of the HEAD: \n");
scanf("%d", &temp->val);
temp->next = NULL;
printf("How many nodes you want to give in input? \n");
int m;
scanf("%d", &m);
for (int i=0;i < m; i++){
temp->next = (node *)malloc(sizeof(node));
temp = temp->next;
printf("Write the value in position %d\n", i+1);
scanf("%d", &temp->val);
temp->next = NULL;
}
printf("What value to x: \n");
int x;
scanf("%d", &x);
modify(head, x);
return 0;
}
void modify(node *head, int x){
node *curr = head;
node *track = head;
node *precNode;
int n, counter;
while(track != NULL){
counter = 0;
while(curr != NULL) {
n = track->val;
if(n == curr->val){
counter++;
}
curr = curr->next;
}
if (counter >= x){
curr = track;
while (curr != NULL){
if(curr->val == n){
node *removed = curr;
precNode->next = curr->next;
curr = curr->next;
free(removed);
}
else{
precNode = curr;
curr = curr->next;
}
}
}
track = track->next;
curr = track;
}
prin(head);
}
void prin(node *head){
while(head != NULL){
printf("%d ", head->val);
head = head->next;
}
}