2014-02-24 43 views
0

我有這個重新編譯爲項目文件的代碼。在它變成一個項目文件之前它運行良好。主要的錯誤是鏈接器錯誤,指出一些結構變量被重複,從我以前的經驗來看,如果我給它添加一些外部參數,它會得到修復,但令我驚訝的是它沒有改變這個技巧,也沒有什麼改變。使用標題的turbo c項目文件中的鏈接器錯誤

注:

我使用的渦輪C作爲需要編譯器學校和我們在學校裏使用所以是

是重複的變量是什麼:

根,溫度,T2 ,和T1

errors

ħ EADER:

#ifndef BSTDLL_H 
#define BSTDLL_H 
#include<stdio.h> 
#include<stdlib.h> 

struct btnode 
{ 
    int value; 
    struct btnode *l; 
    struct btnode *r; 
}*root = NULL, *temp = NULL, *t2, *t1; 

void delete1(); 
void insert(); 
void delete(); 
void create(); 
void search(struct btnode *t); 
void search1(struct btnode *t,int data); 
int smallest(struct btnode *t); 
int largest(struct btnode *t); 
void print(struct btnode *t, int x, int i, int y); 

#endif 

打印:

#include "BSTDLL.h" 
#include<stdio.h> 
#include<stdlib.h> 


void print(struct btnode *t, int x, int i, int y){ 
    i = i/2 + 2; 
    if (root == NULL){ 
     printf("No elements in a tree to display"); 
     return; 
    } 
    if(y > 6){ 
     return; 
    }else{ 
     if (t->l != NULL){ 
      print(t->l, (x - i), i, (y + 1)); 
     } 
      gotoxy(x, y * 2); 
      printf("%d ", t->value); 
     if (t->r != NULL){ 
      print(t->r, (x + i), i, (y + 1)); 
     } 
    } 


} 

插入:

#include "BSTDLL.h" 
#include<stdio.h> 
#include<stdlib.h> 

/* To insert a node in the tree */ 
void insert() 
{ 
    create(); 
    if (root == NULL) 
     root = temp; 
    else  
     search(root);  
} 

/* To create a node */ 
void create(){ 
    int data; 

    printf("Enter value: "); 
    scanf("%d", &data); 
    temp = (struct btnode *)malloc(1*sizeof(struct btnode)); 
    temp->value = data; 
    temp->l = temp->r = NULL; 
} 

/* Function to search the appropriate position to insert the new node */ 
void search(struct btnode *t){ 
    if ((temp->value > t->value) && (t->r != NULL))  /* value more than root node value insert at right */ 
     search(t->r); 
    else if ((temp->value > t->value) && (t->r == NULL)) 
     t->r = temp; 
    else if ((temp->value < t->value) && (t->l != NULL)) /* value less than root node value insert at left */ 
     search(t->l); 
    else if ((temp->value < t->value) && (t->l == NULL)) 
     t->l = temp; 
} 

刪除:

#include "BSTDLL.h" 
#include<stdio.h> 
#include<stdlib.h> 


/* To check for the deleted node */ 
void delete() 
{ 
    int data; 

    if (root == NULL) 
    { 
     printf("No elements in a tree to delete"); 
     return; 
    } 
    printf("Enter the data to be deleted : "); 
    scanf("%d", &data); 
    t1 = root; 
    t2 = root; 
    search1(root, data); 
} 

主要

#include "BSTDLL.h" 
#include<stdio.h> 
#include<stdlib.h> 

struct btnode *root = NULL, *temp = NULL, *t2, *t1; 

void main(){ 
    int ch; 
    clrscr(); 

    while(1){ 
     printf("\n\n\n\n\n\n\n\n\n\nOPERATIONS ---"); 
     printf("\n1 - Insert\n"); 
     printf("2 - Delete\n"); 
     printf("3 - Exit\n"); 
     printf("\nChoice : "); 
     scanf("%d", &ch); 
     switch (ch) 
     { 
     case 1:  
      insert(); 
      clrscr(); 
      print(root, 40, 30, 2); 
      break; 
     case 2:  
      delete(); 
      clrscr(); 
      print(root, 40, 30, 2); 
      break; 
     case 3:  
      exit(0); 
     default :  
      printf("Wrong choice"); 
      break;  
     } 
    } 
} 

我沒有在我的main.c文件添加任何東西

P.S我省略了其他功能,因爲他們在這裏我的困境,也許無關。

回答

2

部首:

變化

struct btnode 
{ 
    int value; 
    struct btnode *l; 
    struct btnode *r; 
}*root = NULL, *temp = NULL, *t2, *t1; 

struct btnode 
{ 
    int value; 
    struct btnode *l; 
    struct btnode *r; 
}; 
extern struct btnode *root, *temp, *t2, *t1; 

的main.c

添加

struct btnode *root = NULL, *temp = NULL, *t2, *t1; 
+0

仍然給我鏈接器錯誤,我添加了主要部分上面的void main() – magicianiam

+0

@magicianIam編譯以前的文件可能被使用。它會刪除目標文件或重新構建所有目標文件。 – BLUEPIXY

+0

赦免?我試圖重新編譯並重新運行該程序,但問題仍然存在,將嘗試刪除tcfonig.tc – magicianiam

相關問題