创建嵌套结构的新列表

时间:2016-10-11 23:19:39

标签: c linked-list

我在尝试从旧的结构创建新的链接列表时遇到了一些麻烦。新链表的基础是,属于用户指定的特定品种的狗将被添加到新列表中,旧列表中的所有狗将不会被转移。我没有问题让一只狗进入列表但我认为当我尝试添加多只狗时,我的代码出了问题。我假设当我创建指向列表结果的第二个临时列表时,当我添加到它时它会修改结果,但似乎并非如此。任何方向将不胜感激。

代码 class HelpPage extends React.Component { constructor(props) { super(props); this.state = { panelIndex: 0 }; } getBtnId = (e) => { if(e.target && e.target.nodeName == "BUTTON") { console.log(e.target); this.setState({ panelIndex: Number(e.target.id) }); } }; render() { return ( <div className="container"> <HelpMenu getBtnId={this.getBtnId} /> <HelpPanels panelIndex={this.state.panelIndex} /> </div> ) } } const HelpMenu = ({ getBtnId }) => { return ( <div className="btnGroup" onClick={getBtnId} > <button id="0">Option 1</button> <button id="1">Option 2</button> <button id="2">Option 3</button> <button id="3">Option 4</button> </div> ); }; class HelpPanels extends React.Component { render() { const panels = [ <HelpPanel1 />, <HelpPanel2 />, <HelpPanel3 />, <HelpPanel4 /> ]; const correctPanel = panels[this.props.panelIndex]; return ( <div className="panel-box"> {correctPanel} </div> ); } } const HelpPanel1 = () => ( <h1>Panel for Option 1</h1> ); const HelpPanel2 = () => ( <h1>Panel for Option 2</h1> ); const HelpPanel3 = () => ( <h1>Panel for Option 3</h1> ); const HelpPanel4 = () => ( <h1>Panel for Option 4</h1> ); ReactDOM.render( <HelpPage />, document.getElementById('root') ); 中的最后一个函数是我似乎遇到问题的函数。其他一切都按预期工作。我相信else语句是我似乎出错的地方,因为当只有一只狗匹配该品种时,它似乎能够从它们那里制作清单。

struct container* list_of_breed(char* breed)

1 个答案:

答案 0 :(得分:0)

我注意到以下问题。你有几个未初始化的成员,你使用它们。因此,您的程序具有未定义的行为。

第一个

add_doc中,您没有初始化成员核对of the newly malloc'ed struct dog`。添加

tempDog->checkups = NULL;
行后

strcpy(tempDog->breed, breed);

第二个

list_of_breed中,您在使用next成员之前未设置cont_dog成员。

添加行

     cont_add->next = NULL;

之后

     cont_add->dog = dog_add;

未来问题

list_of_breed中,您有一行:

     dog_add->checkups = temp->dog->checkups;

这是checkups的浅表副本。为了避免free checkups多次checkups,您需要制作{{1}}的深层副本。

相关问题