Ir ao conteúdo
  • Cadastre-se
PaulaFabiana

C Codigo não compila- Pesquisa binária e, lista vinculada

Recommended Posts

Alguém pode me dizer porque o codigo nã o compila, ele compila em site online, mas no meu pc não (Utilizo o codeblocks e o dev) , é um codigo que o professor na net explicou , o erro esta nessa parte <Node *newNode(int x)>

Link do site: https://www.geeksforgeeks.org/binary-search-on-singly-linked-list/

#include<stdio.h>
#include<stdlib.h>
 
struct Node
{
    int data;
    struct Node* next;
};
 
Node *newNode(int x)
{
    struct Node* temp = new Node;
    temp->data = x;
    temp->next = NULL;
    return temp;
}
 
// function to find out middle element
struct Node* middle(Node* start, Node* last)
{
    if (start == NULL)
        return NULL;
 
    struct Node* slow = start;
    struct Node* fast = start -> next;
 
    while (fast != last)
    {
        fast = fast -> next;
        if (fast != last)
        {
            slow = slow -> next;
            fast = fast -> next;
        }
    }
 
    return slow;
}
 
// Function for implementing the Binary
// Search on linked list
struct Node* binarySearch(Node *head, int value)
{
    struct Node* start = head;
    struct Node* last = NULL;
 
    do
    {
        // Find middle
        Node* mid = middle(start, last);
 
        // If middle is empty
        if (mid == NULL)
            return NULL;
 
        // If value is present at middle
        if (mid -> data == value)
            return mid;
 
        // If value is more than mid
        else if (mid -> data < value)
            start = mid -> next;
 
        // If value is less than mid.
        else
            last = mid;
 
    } while (last == NULL ||
             last -> next != start);
 
    // value not present
    return NULL;
}
 
// Driver Code
int main()
{
    Node *head = newNode(1);
    head->next = newNode(4);
    head->next->next = newNode(7);
    head->next->next->next = newNode(8);
    head->next->next->next->next = newNode(9);
    head->next->next->next->next->next = newNode(10);
    int value = 7;
    if (binarySearch(head, value) == NULL)
        printf("Value not present\n");
    else
        printf("Present");
    return 0;
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@PaulaFabiana       você disse que já compilou esse código no dev c++,   esse código é de c++ mesmo porém no dev c++ ele executa e sai muito rápido, por isso parece que não funcionou,  então coloque esse comando lá no final da main antes do return :

system("pause");

e se for no codeblock  precisa colocar como sendo para o c++ , assim ele vai rodar o código e mostrar o resultado na tela e em seguida vai parar e ficar esperando que pressione alguma tecla , para depois sair do programa   .

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×