提问人:Zenidal 提问时间:4/20/2022 最后编辑:Vlad from MoscowZenidal 更新时间:4/21/2022 访问量:46
C++ 列表函数不旋转
C++ list functions not worling
问:
我正在尝试创建一个程序,让我在列表的尾部添加元素,然后打印它们。它没有给我一个错误,但他什么也没做。我做错了什么?
#include<iostream>
using namespace std;
struct lista{
int val;
lista *next;
};
typedef lista* ptr_lista;
void tail_add(ptr_lista head, int valore){
if(head=NULL){
head=new lista;
head->val=valore;
head->next=NULL;
} else {
ptr_lista p=head;
while(p->next!=NULL){
p=p->next;
}
p->next=new lista;
p->next->val=valore;
p->next->next=NULL;
}
}
void print(ptr_lista p){
while(p!=NULL){
cout<<p->val<< " ";
p=p->next;
}
}
int main(){
ptr_lista m;
tail_add(m,5);
tail_add(m,6);
print(m);
}
答:
1赞
Vlad from Moscow
4/20/2022
#1
对于初学者,指针未初始化,并且具有不确定的值m
ptr_lista m;
您需要初始化它
ptr_lista m = nullptr;
该函数按值接受指针
void tail_add(ptr_lista head, int valore){
因此,更改函数中的参数,例如head
head=new lista;
对 main 中声明的原始指针没有影响。m
您需要将参数声明为对指针的引用
void tail_add(ptr_lista &head, int valore){
该函数可以按以下方式定义
void tail_add( ptr_lista &head, int valore )
{
ptr_lista new_lista_ptr = new lista { valore, nullptr };
if ( head == nullptr )
{
head = new_lista_ptr;
}
else
{
ptr_lista p = head;
while ( p->next ) p = p->next;
p->next = new_lista_ptr;
}
}
请注意,为指针引入别名不是一个好主意,例如
typedef lista* ptr_lista;
例如,如果你将
const ptr_lista
那么它的意思是
lista * const
不
const lista *
这是函数参数声明所必需的,因为它不会更改列表的节点。print
上一个:带指针的结构 [已关闭]
评论