已知head
指向乙個帶頭節點的單向鍊錶,鍊錶中每個結點包含資料域和指標域。用鍊錶實現該鍊錶的逆置,並輸出。只要求實現該函式功能即可。函式宣告為
void convert(struct node *head)
結點的結構體為 :
例如:
輸入:abcdefghijklmn
輸出:nmlkjihgfedcba
1、演算法的核心就是convert
函式,其它的都是輔助建立鍊錶和輸出鍊錶的。從資料結構的定義來看這是乙個帶頭節點的鍊錶。要弄的十分明白要耐心點畫圖看看。
2、思路:
head是指向頭結點的
p=head; //p最開始指向頭結點
s=p->next; //s最開始指向第乙個節點
while(s->next!=null)//只要沒有到最後乙個元素就繼續。最後乙個元素的next肯定為null
s->next=p; //當最後乙個的時候,還是要指向她的前乙個。
head->next->next=null;//頭指標的下乙個是指向原來的第乙個。逆向後肯定是最後的那個了。所以最後的乙個的next=null就明了了。
head->next=s;//s是逆序前的最後乙個,逆序後是第乙個,所以用頭指向他
#include #include typedef struct node
link;
link *creat(int n) //建立鍊錶
p -> next = null;
return head;
}void convert(link *head) //原地置換
s -> next = p;
head -> next -> next = null; //收尾
head -> next = s; //賦頭
}void display(link *head) //顯示鍊錶內容
printf("\n");
}int main()
單鏈表逆置
單鏈表逆置 include include define item num 10 typedef struct tagnode node node linklist create void linklist destroy node head void linklist print node hea...
單鏈表逆置
name 單鏈表逆置 author 巧若拙 date 22 11 14 16 13 description 分別用遞迴和非遞迴兩種方式實現單鏈表 不含頭結點 的逆置 include include include typedef char elemtype typedef int status 函式...
單鏈表逆置
最近在leetcode oj上刷題,將一些演算法題的解法記錄下來,也期待一些新的更好的方法。題目是這樣滴 206.reverse linked list reverse a singly linked list.hint a linked list can be reversed either it...