C 反向链接列表的代码
我已经为反转链表编写了代码。 如果我运行此代码,给定的链表将被打印,但不会反转 我认为反转功能有些错误 能找个人吗。。告诉我代码中的错误。 我用了三个指针C 反向链接列表的代码,c,data-structures,linked-list,C,Data Structures,Linked List,我已经为反转链表编写了代码。 如果我运行此代码,给定的链表将被打印,但不会反转 我认为反转功能有些错误 能找个人吗。。告诉我代码中的错误。 我用了三个指针 #include<stdio.h> #include<stdlib.h> struct node { int data; struct node* next; }; void reverse(struct node** headr) { struct node* current=*headr
#include<stdio.h>
#include<stdlib.h>
struct node {
int data;
struct node* next;
};
void reverse(struct node** headr) {
struct node* current=*headr;
struct node*temp=*headr;
struct node* prev;
struct node* next;
while (current!=NULL) {
prev=current;
current=current->next;
next=current;
next->next=prev;
}
temp->next=NULL;
*headr=current;
}
void push(struct node** headr, int new_data) {
struct node* new_node = (struct node*) malloc(sizeof(struct node));
new_node->data = new_data;
new_node->next = (*headr);
(*headr) = new_node;
}
void print(struct node *head) {
struct node *temp = head;
while (temp != NULL) {
printf("%d ", temp->data);
temp = temp->next;
}
}
int main() {
struct node* head = NULL;
push(&head, 20);
push(&head, 4);
push(&head, 15);
push(&head, 85);
printf("Given linked list\n");
print(head);
reverse(&head);
printf("\nReversed Linked list \n");
print(head);
getchar();
}
#包括
#包括
结构节点{
int数据;
结构节点*下一步;
};
无效反向(结构节点**头){
结构节点*当前=*头;
结构节点*temp=*headr;
结构节点*prev;
结构节点*下一步;
while(当前!=NULL){
prev=当前值;
当前=当前->下一步;
下一个=当前;
下一步->下一步=上一步;
}
temp->next=NULL;
*头=电流;
}
void push(结构节点**headr,int new_数据){
结构节点*新节点=(结构节点*)malloc(sizeof(结构节点));
新建_节点->数据=新建_数据;
新建节点->下一步=(*头);
(*头)=新的_节点;
}
无效打印(结构节点*头){
结构节点*温度=头部;
while(temp!=NULL){
printf(“%d”,临时->数据);
温度=温度->下一步;
}
}
int main(){
结构节点*head=NULL;
推压(和压头,20);
推压(和头部,4);
推压(和压头,15);
推压(头,85);
printf(“给定链接列表”);
打印头;
反向(头);
printf(“\n反向链表\n”);
打印头;
getchar();
}
这可能会帮助您:
void reverse(struct node** headr)
{
struct node* current=*headr;
struct node* prev = NULL;
struct node* next;
while(current!=NULL)
{
next=current->next;
current->next = prev;
prev = current;
current = next;
}
*headr=prev;
}
您的主要客户:
int main()
{
struct node* head = NULL;
push(&head, 20);
push(&head, 4);
push(&head, 15);
push(&head, 85);
printf("Befor:\n");
print(head);
reverse(&head);
printf("\nAfter:\n");
print(head);
getchar();
}
Befor:
85 15 4 20
After:
20 4 15 85
输出:
int main()
{
struct node* head = NULL;
push(&head, 20);
push(&head, 4);
push(&head, 15);
push(&head, 85);
printf("Befor:\n");
print(head);
reverse(&head);
printf("\nAfter:\n");
print(head);
getchar();
}
Befor:
85 15 4 20
After:
20 4 15 85
程序输出可能重复?查看更多有关如何执行此操作的示例@A.Raza我没有问,如何使用两个指针执行此操作。我想知道我的错误你的方法很有效,和我在Geeksforgek上发现的一样。但我的代码中有什么错误?@BhartKumar你的反向while循环在第一个和第二个节点(data=85和15)之间跳跃,因此从未结束。单步执行调试器以查看此信息。如果你草拟了这两个循环(你的答案和这个答案),你就应该知道什么是错的。@ StAdvutr我回滚它,抱歉我发布了我的C++工作。course@BhartKumar现在检查它,我修复
而循环问题