//******************爱X的味道***********************//
//算法实现 带头结点的单链表就地逆置
//*************************************************//
//具体算法实现: 头插法就是很好的 逆置方法,只要增加一个指针指向第一个节点
//再将原来头结点的next指针置为空值 再将此时的节点一个个头插进表中,即可
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int num;
struct node *next;
}Linklist;
void change(Linklist *list);
void change(Linklist *list)
{
Linklist *p,*q;
p=list->next;
list->next=NULL;
while(p != NULL)
{
q=p->next;
p->next=list->next;
list->next=p;
p=q;
}
}
int main()
{
Linklist *new_list,*new_node,*rear,*after;
new_list=(Linklist *)malloc(sizeof(node));
rear=new_list;
printf("带头结点单链表的元素是 :\n");
for(int i=0;i<10;i++)
{
new_node=(Linklist *)malloc(sizeof(node));
new_node->num=i+1;
rear->next=new_node;
rear=new_node;
printf("%d ",new_node->num);
}
printf("\n\n");
rear->next=NULL;
change(new_list);
printf(" 带头结点单链表就地逆置后的元素是: \n");
after=new_list->next;
while(after !=NULL)
{
printf(" %d",after->num);
after=after->next;
}
printf("\n\n");
free(new_list);
return 0;
}
带头结点的单链表就地逆置
最新推荐文章于 2024-09-30 09:14:56 发布