需要解释代码

时间:2017-01-29 18:46:02

标签: c++

为什么main()中显示的参数是start而不是newptr?另外,np-> next = save;和np = np->接下来在各自的功能中工作?我对链表的概念很新。任何帮助将不胜感激。

#include<iostream>
using namespace::std;

struct node
{
int info;
node *next;
} *start,*newptr,*save,*ptr;
node * create_new_Node(int);
void insert_beg(node *);
void display(node*);
int main()
{
start=NULL;
int inf; char ch='y';
while(ch=='y'||ch=='Y')
{
    system("cls");
    cout<<"Enter information for the new node  : \n";
    cin>>inf;
    cout<<"\nCreating new node";
    system("pause");
    newptr=create_new_Node(inf);
    if(newptr!=NULL)
    {
        cout<<"New node created successfully.";
        system("pause");
    }
    else
    {
        cout<<"\aNot enough memory =S ...\n";
        exit(1);
    }
    cout<<"Now inserting this node to the beginning of the list  :";
    system("pause");
    insert_beg(newptr);
    cout<<"Now the list is  :  ";
    display(start);
    cout<<"Press Y or y to enter more nodes :::: ";
    cin>>ch;
}
return 0;
}



node * create_new_Node(int n)
{
ptr=new node;
ptr->info=n;
ptr->next=NULL;
return ptr;
}


void insert_beg(node *np)
{
if(start==NULL)
{
    start=np;
}
else
{
    save=start;
    start=np;
    np->next=save;
}
}
void display(node * np)
{
while(np!=NULL)
{
    cout<<np->info<<" -> ";
    np=np->next;
}
}

2 个答案:

答案 0 :(得分:1)

在insert_beg中,start的指针被更改为新的开始位置,即新插入的节点。

在我看来,指针操作更适合在图形模型中解读..

Pointer issue graphically explained

答案 1 :(得分:0)

  

为什么main()中显示的参数是start而不是newptr?

因为start是链表中的头指针,并且始终指向链表中的第一个节点。要显示链接列表,必须从第一个节点开始,并且start指针指向第一个节点。

  

np-&gt; next = save;和np = np-&gt;下一步在他们各自的工作   功能

np->next=save;这意味着节点next的{​​{1}}指针应该指向np指针所指向的节点。

save正在np=np->next;函数中使用它来迭代链表。