#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
typedef struct node{
int num;
node *next;
}node_t;
void reverse_list(node_t **pheadmain);
void print_list(node_t *pheadmain);
void free_list(node_t *pheadmain);
void main()
{
node_t *phead = NULL;
node_t *pheadtemp = NULL;
node_t *temp = NULL;
int i;
phead = (node_t *)malloc(sizeof(node_t));
phead->num = 0;
phead->next = NULL;
pheadtemp = phead;
for(i=1; i<5; i++)
{
temp = (node_t *)malloc(sizeof(node_t));
temp->num = i;
temp->next = NULL;
pheadtemp->next = temp;
pheadtemp = pheadtemp->next;
}
print_list(phead);
reverse_list(&phead);
print_list(phead);
free_list(phead);
}
void free_list(node_t *pheadmain)
{
node_t *phead = pheadmain;
node_t *pheadtemp = NULL;
while(phead != NULL)
{
pheadtemp = phead->next;
free(phead);
phead = pheadtemp;
}
}
void print_list(node_t *pheadmain)
{
node_t *phead = pheadmain;
while(phead != NULL)
{
cout<<phead->num<<" ";
phead = phead->next;
}
cout<<endl;
}
void reverse_list(node_t **pheadmain)
{
node_t *phead = *pheadmain;
node_t *pheadPPP = NULL;
node_t *pheadQQQ = NULL;
pheadPPP = phead;
phead = phead->next;
pheadPPP->next = NULL;/*init*/
while(phead != NULL)
{
pheadQQQ = phead->next;
phead->next = pheadPPP;
pheadPPP = phead;
phead = pheadQQQ;
}
*pheadmain = pheadPPP;
}
该博客展示了一段C++代码,实现了链表的创建、反转和释放操作。代码中定义了链表节点结构体,通过循环创建链表,使用特定函数对链表进行反转和打印,最后释放链表内存,体现了链表操作的基本逻辑。
293

被折叠的 条评论
为什么被折叠?



