我想反轉鏈接列表,並且我的代碼似乎不起作用。我不知道它有什麼問題。我使用了我在這裏找到的reverse()
函數,我甚至在紙上測試了它,所以我非常確定代碼是好的,但我仍然錯過了一些東西。我很想知道什麼是錯的。這裏是我的代碼:C - 我想要反轉鏈接列表
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int val;
struct node * next;
}node;
void push(int val, node **head){
node* temp=(node*)malloc(sizeof(node));
node* current=*head;
temp->val=val;
if(*head==NULL)
{*head=temp;
temp->next=NULL;}
else
{while(current->next!=NULL)
current=current->next;
current->next=temp;
temp->next=NULL;}
}
int reverse(node * head){
node *previous = NULL;
node *current = head;
node *forward;
while (current != NULL) {
forward = current->next;
current->next = previous;
previous = current;
current = forward;
}
return previous;
}
void print(node *new_head){
node* current2=new_head;
current2=current2->next;
while(current2!=NULL)
{
printf("%d", current2->val);
current2=current2->next;
}}
int main()
{ node * head= NULL;
int n;
node * new_head;
scanf("%d", &n);
push(n,head);
scanf("%d", &n);
push(n,head);
scanf("%d", &n);
push(n,head);
new_head=reverse(head);
print(new_head);
return 0;}
我只是想反轉一個輸入,如:1,2,3。所以輸出將是3,2,1。
是否編譯?錯誤消息說什麼? – wildplasser 2014-11-01 18:36:14
你需要雙向鏈表嗎? – 2014-11-01 18:37:45
'previous'不是'int'。 – ooga 2014-11-01 18:37:46