0
私はフロントやエンドに追加してフロントやエンドから削除するなどのことができるノードリストに取り組んでいますが、オーダーリストも作成できるようにしたいと考えています。だから、私はadd_inorder命名する方法/機能を.. 構造体の名前にstrcmpを使用してノードをリストに追加するにはどうすればよいですか?
はこれまでのところ、これは私が持っているものされてい// the struct:
typedef struct node
{
int id;
char* name;
struct node* next;
} node;
void add_inorder(node** head, node* new_node) {
node* previous = *head;
if (!*head) {
*head = new_node;
}
else if (strcmp((*head)->name, new_node->name) > 0) {
new_node->next = *head;
*head = new_node;
}
else {
node* it = (*head)->next;
while (it) {
if (strcmp(it->name, new_node->name) > 0) {
new_node->next = it;
previous->next = new_node;
break;
}
previous = it;
it = it->next;
if (previous->next == NULL) {
previous->next = new_node;
break;
}
}
}
}
スクリーンダンプ:
はGeneral stuff ...
--------------------------------------------------
Memory used to date : 0
node size : 24
List length now is : 0
Memory used to date : 0
Print List :
--------------------------------------------------
Add Inorder/Remove Inorder ...
--------------------------------------------------
Adding node : {0, Jill}
List length now is : 1
Memory used to date : 29
Print List :
{0, Jill}
Adding node : {1, Jane}
List length now is : 2
Memory used to date : 58
Print List :
{1, Jane}
{0, Jill}
Adding node : {2, Jeff}
List length now is : 3
Memory used to date : 87
Print List :
{1, Jane}
{2, Jeff}
{0, Jill}
Adding node : {3, Jz}
List length now is : 4
Memory used to date : 114
Print List :
{1, Jane}
{2, Jeff}
{0, Jill}
{3, Jz}
編集:質問は今私が思う私コードは少し休憩を取ったときにうまく機能しませんでしたが、私はそれを修正することをどのように提案しますか?
https://stackoverflow.com/help/mcveおよびhttps://stackoverflow.com/help/how-to-ask – jwdonahue
を編集して元のコードブロックを編集するか、現在の状態を示すコードブロックを追加してください。 – jwdonahue
ねえ、私はそれを修正したが、いくつかの休憩を入れなければならなかった。無限にループしていた前に、私はなぜそれがわからないのですか?しかし、私がした変更は非常に劇的です。 – jlyeffx