iT邦幫忙

1

資結-建樹時遇到的問題(segmentation default)

  • 分享至 

  • xImage
#include<iostream>
#include<queue>
#include<math.h>
#define size 10000

using std:: cin;
using std:: cout;
using std:: queue;
using std:: string;

struct node{
    struct node *left_child;
    string data;
    struct node *right_child;
};
typedef struct node Node;

queue<Node*> q;

void to_infix();
void add(int num,Node **first);


int main(void){
    int num;

    cin >> num;

    
    Node *a;
    add(num,&a);



    // to_infix();
    return 0;
}

void add(int num,Node **first){
    Node *current;
    string infix;

    for(int i=0;i<pow(2,num)-1;i++){
        current=(Node *) malloc(sizeof(Node));

        cin >> infix;
        current->data=infix;//這邊這邊這邊(我不知道怎麼設定行數

        current->left_child=NULL;
        current->right_child=NULL;

        q.push(current);
        
        if(i==0){
            (*first)=current;
        }else if(!q.empty()){
            if(q.front()->left_child==NULL){
                q.front()->left_child=current;
            }else if(q.front()->right_child==NULL){
                q.front()->right_child=current;
                q.pop();
            }
        }
 
    }
    while(!q.empty()){
        q.pop();
    }

}

在建一個tree時,原本node的int data想改用string,cin 時卻遇到segmentation default的問題,麻煩各位大老指點??

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
bro_lets_coding
iT邦新手 5 級 ‧ 2022-11-09 22:41:11

同學你好 我也覺得這很神奇,但我個人認為c++配置記憶體使用new()會比較保險,我個人把你的malloc()帶換成new()後能成功運行

看更多先前的回應...收起先前的回應...
lloydgain iT邦新手 5 級 ‧ 2022-11-09 23:32:50 檢舉

1

lloydgain iT邦新手 5 級 ‧ 2022-11-09 23:33:19 檢舉

大家綠色聊天好嗎

lloydgain iT邦新手 5 級 ‧ 2022-11-09 23:34:05 檢舉

這個方法是有用的 感謝大老

那確實

我要發表回答

立即登入回答