当前位置:主页聚焦 > > 正文

单链表的逆置

时间: 2023-07-12 09:45:12 来源: 个人图书馆-算法与编程之美


(资料图)

1 问题

int data;struct List* next;}LIST;//表的初始化,不带头节点,LIST* CreatSlist() { LIST* head=NULL; for(int i=5;i>=1;i--) {LIST* newhead=(LIST *)malloc(sizeof(LIST));newhead->data=i; newhead->next=head; head=newhead;}return head;}//打印输出 void print(LIST* P){while(P!=NULL){printf("%d ",P->data);P=P->next;}printf("\n");return; }//单链表反转(头插法) LIST* reverse(LIST* head){LIST *temp=NULL,*Phead=NULL; while(head!=NULL){temp=head;head=head->next;temp->next=Phead;Phead=temp;}return Phead; } int main (){printf("原来的链表的数据:\n"); LIST* P=CreatSlist();print(P);printf("反转后链表的数据:\n"); LIST* head=reverse(P);print(head);return 0; } #方法二#include #include typedef struct List{int data;struct List* next;}LIST;//表的初始化,不带头节点,LIST* CreatSlist() { LIST* head=NULL; for(int i=5;i>=1;i--) {LIST* newhead=(LIST *)malloc(sizeof(LIST));newhead->data=i; newhead->next=head; head=newhead;}return head;}//打印输出 void print(LIST* P){while(P!=NULL){printf("%d ",P->data);P=P->next;}printf("\n");return; }//单链表反转(递归法) LIST* reverse(LIST* head){if(head==NULL||head->next==NULL)return head;LIST *new_head=reverse(head->next);head->next->next=head;head->next=NULL;return new_head; } int main (){printf("原来的链表的数据:\n"); LIST* P=CreatSlist();print(P);printf("反转后链表的数据:\n"); LIST* head=reverse(P);print(head);return 0; }

3 结语

针对如何实现单链表的逆置,提出利用头插法和递归法进行处理,通过利用IDLE编写,证明该方法是有效的,通过本次实验加深单链表基本处理操作,为更深入的有关单链表的操作积累了经验,有助于提升对单链表的操作能力。

关键词:

相关文章

单链表的逆置

1 问题int data;struct List* next;}LIST; 表的初始化,不带头

来源:个人图书馆-算法与编程之美2023-07-12

编辑分六等,你在第几等?

20多年前,中国出版业开启了一场影响至今的深刻变革,各省区市新闻出版

来源:文艺报2023-07-12

上半年汽车工业多项经济指标创新高

央视网消息(新闻联播):中国汽车工业协会今天(7月11日)的最新数据显

来源:央视网2023-07-12

前无古人!拉塞尔续约湖人创造NBA历史纪录,詹科都不敢这样做

前无古人!拉塞尔续约湖人创造NBA历史纪录,詹科都不敢这样做,湖人,科

来源:今天打篮球了吗2023-07-12

淡马锡报告7年来最糟回报率 称中国仍有投资机会

新加坡国家投资机构淡马锡控股(TemasekHoldings)公开了自2016年以来最

来源:股票牛2023-07-12