не удалось выполнить программу devc ++ - PullRequest
0 голосов
/ 21 сентября 2018

Я скомпилировал это на devc ++, и он возвращает это сообщение

ОШИБКА 193: это не допустимое приложение win32.

Я не могу понять этов чем проблема.

Кодовые блоки лучше, чем devc ++ для проги на C?Поскольку я в основном нахожу проблемы с devc ++, поэтому, пожалуйста, скажите мне, в чем проблема и почему я не могу скомпилировать ее с помощью devc ++

/* Doubly Linked List implementation */
#include<stdio.h>
#include<stdlib.h>

struct Node  {
    int data;
    struct Node* next;
    struct Node* prev;
};

struct Node* head; // global variable - pointer to head node.

//Creates a new Node and returns pointer to it. 
struct Node* GetNewNode(int x) {
    struct Node* newNode
        = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = x;
    newNode->prev = NULL;
    newNode->next = NULL;
    return newNode;
}

//Inserts a Node at head of doubly linked list
void InsertAtHead(int x) {
    struct Node* newNode = GetNewNode(x);
    if(head == NULL) {
        head = newNode;
        return;
    }
    head->prev = newNode;
    newNode->next = head; 
    head = newNode;
}

//Inserts a Node at tail of Doubly linked list
void InsertAtTail(int x) {
    struct Node* temp = head;
    struct Node* newNode = GetNewNode(x);
    if(head == NULL) {
        head = newNode;
        return;
    }
    while(temp->next != NULL) temp = temp->next; // Go To last Node
    temp->next = newNode;
    newNode->prev = temp;
}

//Prints all the elements in linked list in forward traversal order
void Print() {
    struct Node* temp = head;
    printf("Forward: ");
    while(temp != NULL) {
        printf("%d ",temp->data);
        temp = temp->next;
    }
    printf("\n");
}

//Prints all elements in linked list in reverse traversal order. 
void ReversePrint() {
    struct Node* temp = head;
    if(temp == NULL) return; // empty list, exit
    // Going to last Node
    while(temp->next != NULL) {
        temp = temp->next;
    }
    // Traversing backward using prev pointer
    printf("Reverse: ");
    while(temp != NULL) {
        printf("%d ",temp->data);
        temp = temp->prev;
    }
    printf("\n");
}

int main() {

    /*Driver code to test the implementation*/
    head = NULL; // empty list. set head as NULL. 

    // Calling an Insert and printing list both in forward as well as reverse direction. 
    InsertAtTail(2); Print(); ReversePrint();
    InsertAtTail(4); Print(); ReversePrint();
    InsertAtHead(6); Print(); ReversePrint();
    InsertAtTail(8); Print(); ReversePrint();

}

1 Ответ

0 голосов
/ 21 сентября 2018

Проблема, которую вы получаете, если я понимаю по-французски, состоит в том, что скомпилированная программа не является допустимым приложением Win32.Это может быть просто потому, что вы выбрали проект Windows, но предоставили int main() вместо WinMain.Это должен быть проект консольного приложения.

Если причина не в этом, я бы заподозрил некоторые не связанные с программированием причины, такие как запуск исполняемого файла во время компоновки, антивирусные программы, вызывающие хаос, права доступа пользователейи т. д.

DevC ++ больше не поддерживается и поэтому содержит более старую версию компилятора gcc / g ++.Поэтому я настоятельно рекомендую использовать Codeblocks, поскольку он может использовать последнюю версию компилятора.Это также гораздо более мощная среда IDE, и, поскольку она также аккуратно компилирует ваш код, нет никаких оснований придерживаться DevC ++.

...