编写函数实现无头单链表逆置

it2022-05-05  154

无头单向非循环链表 三种方法实现无头单向非循环链表的逆置

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 }

最新回复(0)