Когда я запускаю это, он не сообщает никаких ошибок, но ничего не происходит. Он не вернет указатель на наименьший элемент списка, он просто ничего не делает.. Связанный список не работает
сделать функцию с указателем, который указывает на первый элемент дважды связанного списка, который возвращает указатель на наименьший элемент списка
#include<stdio.h>
#include<stdlib.h>
typedef struct list DLlist;
struct list{
DLlist *next, *previous;
int number;
};
DLlist *first = NULL;
int n=0;
DLlist* add(DLlist *end, int number){
DLlist* perm;
perm = (DLlist *)malloc(sizeof(DLlist));
perm->number = number;
if(first==NULL){
first = perm;
first->next = NULL;
first->previous = NULL;
end = perm;
}else{
perm->next = NULL;
end->next = perm;
perm->previous = end;
end = perm;
return end;
n++;
}
}
DLlist* return_smallest(DLlist *first){
DLlist *max;
DLlist *current;
first = max;
current = first;
for(int i=0;i<n;i++){
if(current->number < max->number) max = current;
current = current->next;
}
return max;
}
void main(){
DLlist *end = NULL;
int number;
int choice;
do{
printf("1-Add elements to list: \n"
"2-Return a pointer to the smallest element in the list\n");
scanf("%d",&choice);
scanf("%d",&number);
switch(choice){
case 1: end = add(end, number);break;
case 2: printf("%d",(return_smallest(first))->number);
}
}while(choice == 1);
}
Предоставьте более полезное описание проблемы, чем «это не делает работу». – Cairnarvon
Я внес некоторые изменения ... – user3053047