检查代码:#include <iostream> using namespace std; struct node { int data; struct node *next; }; void show(node * l) { l=l->next; while(l!=NULL) { cout<<l->data<<" "; l=l->next; } } void create(node * l,int a[],int n) { l=new node; l->next=NULL; node *p; for(int i=0;i<n;i++) { p=new node; p->data=a[i]; p->next=l->next; l->next=p; } } int main() { int a[100],A,a1=0; for(int i=0;;i++) { cin>>A;if(A==0)break; else {a[i]=A;a1++;} } node *l; l=new node; create(l,a,a1); show(l); return 0; }
时间: 2024-03-23 22:42:11 浏览: 64
#include_iostream.h_
4星 · 用户满意度95%
这段代码已经解决了之前提到的问题,可以正常运行。但是,还有一个小的改进建议:
在 create 函数中,你使用了 l->next=p; 这句话,这会将新建的节点 p 插入到链表的第一个位置,导致链表的顺序与输入数组的顺序相反。如果你想要链表的顺序与输入数组的顺序相同,应该将新建的节点插入到链表的最后一个位置。修改的方式是,首先找到链表的最后一个节点,然后将新建的节点插入到它的后面。修改后的 create 函数如下所示:
```cpp
void create(node * l,int a[],int n) {
l->next=NULL;
node *p=l;
for(int i=0;i<n;i++)
{
node *new_node=new node;
new_node->data=a[i];
new_node->next=NULL;
p->next=new_node;
p=new_node;
}
}
```
这样,你就可以保证链表的顺序与输入数组的顺序相同了。
阅读全文