#include <stdio.h>
#include <stdlib.h>
typedef struct LNode {
int data;
struct LNode* next;
}LNode;
typedef LNode *LinkList;
//尾插法创建链表
LinkList Create_List(){
LinkList L,p,r;
int x;
r=L=(LinkList)malloc(sizeof(LNode));
L->next =NULL;
scanf("%d",&x);
while(x!=0){
p=(LinkList)malloc(sizeof(LNode));
p->data =x;
p->next =NULL;r->next =p;//修改链接关系
r=p; //r指向新的尾节点
scanf("%d",&x);
}
return L;
}
//头插法新建一个链表,实现链表的倒置
LinkList Convert_List(LinkList L){
LinkList M,p,q;
p=L->next ;
M->next =NULL;
q=(LinkList)malloc(sizeof(LNode));
q=M->next ;
while(p!=NULL){
q->data =p->data ;
q->next =M->next ;
M->next =q;
p=p->next ;
}
return M;
}
void print(LinkList L){
LinkList p;
p=L->next ;
while(p!=NULL){
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
int main() {
LinkList L=Create_List();
print(L);
L=Convert_List(L);
print(L);
return 0;
}

关于#链表#的问题:单链表倒置
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- qzjhjxj 2021-09-22 16:58关注
实现链表的逆置,供参考:
/实现链表的倒置 LinkList Convert_List(LinkList L) { LinkList p, q; p = L->next; L->next = NULL; while (p != NULL) { q = p; p = p->next; q->next = L->next; L->next = q; } return L; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用