0

最近インタビューに参加した友人から、次の質問を聞いたことがあります。

連結リストの先頭を指定して、連結リスト内の次の要素と先頭を交換し、新しい先頭へのポインタを返す関数を記述します。

元:

i/p: 1->2,3,4,5 (the given head is 1)
o/p: 2->1,3,4,5
4

2 に答える 2

5

仮定

struct node {
    struct node *next;
};
struct node *head;

解決策は次のようになります

struct node *next = head->next;
if(next == NULL) return head; // nothing to swap
head->next = next->next;
next->next = head;
head = next;
return next;
于 2012-10-11T04:32:40.690 に答える
2
struct node* head;

struct node *tmp1,*tmp2;
tmp1=head; // save first node pointer
tmp2=head->next->next; // save third node pointer
head=head->next; // Move Head to the second node
head->next=tmp1; // swap
head->next->next=tmp2; // Restore the link to third node
于 2012-10-11T05:06:35.747 に答える