无头单向非循环链表 三种方法实现无头单向非循环链表的逆置
void SListReverse(SList* plist){
#if 0 //方法1
SListNode* tmp = plist->_head->_next;
SListNode* cur = plist->_head;
while (tmp){
cur->_next = tmp->_next;
tmp->_next = plist->_head;
plist->_head = tmp;
tmp = cur->_next;
}
#elseif 0 //方法2
SList* reve = (SList*)malloc(sizeof(SList));
SListInit(reve);
SListNode* cur;
for (cur = plist->_head; cur; cur = cur->_next){
SListPushFront(reve, cur->_data);
}
SListDestory(plist);
plist->_head = reve->_head;
#else //方法3
SListNode* tmp = plist->_head->_next;
SListNode* cur = plis->_head;
cur->_next = NULL;
while (tmp){
plist->_head = tmp;
tmp = tmp->_next;
plist->_head->_next = cur;
cur = plist->_head;
}
#endif
}