#include<stdio.h> #include<stdlib.h> struct Node{ int data; struct Node* next; }; struct Node* Insert(struct Node* head,int data){ struct Node* temp1 = (struct Node*)malloc(sizeof(struct Node)); temp1->data = data; temp1->next = NULL; struct Node* temp2 = head; if(temp2 ==NULL){ temp2 = temp1; return; } while(temp2->next!=NULL){ temp2 = temp2->next; } temp2->next = temp1; } struct Node* Print(struct Node* head){ struct Node *temp = head; while(temp->next!=NULL){ printf("%d ",temp->data); temp = temp->next; } printf("\n"); } struct Node* Reverse(struct Node* head){ struct Node *current,*prev,*next; current = head; prev = NULL; while(current!=NULL){ next = current->next; current->next = prev; prev = current; current = next; } head = prev; return head; } int main(){ struct Node* head = NULL; head = Insert(head,2); head = Insert(head,4); head = Insert(head,6); head = Insert(head,8); Print(head); head = Reverse(head); Print(head); }这段代码有什么问题
时间: 2024-01-28 17:03:26 浏览: 54
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码存在以下问题:
1. 函数 Insert() 没有返回值,应该返回修改后的链表头节点指针 head。
2. 函数 Print() 没有返回值,应该修改为 void Print(struct Node* head)。
3. 函数 Insert() 中,当链表为空时,应该将头节点指针 head 指向新节点,而不是 temp2 指向新节点。
4. 函数 Print() 中,应该在循环结束后再打印链表最后一个节点的值,即应该将 printf("%d ",temp->data); 改为 printf("%d ",temp->data); 。
5. 函数 Reverse() 中,应该在修改 head 指针前先判断链表是否为空,否则会出现空指针异常。
修改后的代码如下:
阅读全文