私の教授が行った "エンキュー"機能を理解しようとしていますが、いくつかのステップはありません。リンクリストのエンキュー機能
struct queue_node {
int item;
struct queue_node* next;
};
typedef struct queue_node* queue;
int enqueue (queue* tail, int i) {
queue n;
queue *iter;
n = (queue)malloc(sizeof(struct queue_node));
if (!n) return 1;
n->item = i;
n->next = NULL;
for (iter=tail; *iter != NULL; iter = &((*iter)->next)
;
*iter = n;
return 0;
}
まず、 "typedef struct queue_node * queue;"というメッセージが表示されます。私は「エンキューを実行しようとしました私の教授の溶液を読み取ろうとする前に、途中でそう
(私が間違っている場合は、コードを修正してください)ので、私はコードをこのように再解釈しようとしたstruct queue_node {
int item;
struct queue_node* next;
};
typedef struct queue_node queue;
int enqueue (queue **tail, int i) {
queue *n;
queue **iter;
n = (queue)malloc(sizeof(struct queue_node));
if (!n) return 1; --->what does that mean?
n->item = i;
n->next = NULL;
for (iter=tail; **iter != NULL; iter = &((*iter)->next)--->last part of the for is unclear to me... can i rewrite it as "iter = **((iter)->next)"?
;
*iter = n; -->this is the part i don't really get...
return 0;
}
私を混乱させています」機能は自分で
typedef struct node{
int value;
struct node *next;
}node;
void enqueue(node *head,int data){
if(head->next != NULL){
enqueue(head->next,data);
}
node *new=NULL;
new=malloc(sizeof(node));
new->value=data;
new->next=NULL;
head->next=new;
}
これはいいですか?または私はそれを使用することはできません?あなたは
queue* myqueue = (queue*)malloc(sizeof(struct queue_node));
の代わりとして、このコメントで指摘
struct queue_node** myqueue = (struct queue_node**)malloc(sizeof(struct queue_node));
書くことができるようにtypedef struct queue_node* queue;
は新しい型を定義
typedefを完全に削除し、いくつかの構造化キーワードを追加すれば、残りの人生にとっては満足しています。 – wildplasser
教授の最後のforループに何か不足しているようですが、私は別の ')' –
を期待していました。これは問題ではありませんが、C++を使用している場合は変数の名前として 'new'を使用できません。これは割り当てのキーワードです – meetaig