- 这里只介绍链表逆置的实现
- 效果展示:
typedef struct LIST
{
int data;
struct LIST *next;
}list;
void list_addNode(list **pHead)
{
list *head;
list *pAdd;
list *pTmp;
head = *pHead;
pTmp = NULL;
int n, i = 0;
printf("输入多少个数:");
scanf("%d", &n);
while (n-- > 0)
{
pAdd = (list*)malloc(sizeof(list));
if (pAdd == NULL)
{
printf("func addNode() error !\n");
return;
}
pAdd->data = ++i;
pAdd->next = NULL;
if (head == NULL)
{
head = pAdd;
}
else
{
pTmp->next = pAdd;
}
pTmp = pAdd;
}
*pHead = head;
}
void list_print(list *head)
{
list *pTmp = NULL;
if (head == NULL)
{
printf("func list_print() error !\n");
return;
}
pTmp = head;
printf("Head");
while (pTmp)
{
Sleep(500);
printf("-> %d ", pTmp->data);
pTmp = pTmp->next;
}
printf("->End\n");
}
- 链表逆置过程
void list_inverse(list **pHead)
{
list *head;
list *pCur;
list *pPos;
list *pTmp;
if (pHead == NULL)
{
printf("func list_inverse() error !\n");
return;
}
head = *pHead;
pCur = head;
pPos = pCur->next;
while (pPos)
{
pTmp = pPos->next;
pPos->next = pCur;
pCur = pPos;
pPos = pTmp;
}
head->next = pPos;
head = pCur;
*pHead = head;
}
int _tmain(int argc, _TCHAR* argv[])
{
list *head = NULL;
list_addNode(&head);
list_print(head);
list_inverse(&head);
print(head);
system("pause");
return 0;
}