在学C语言的时候早已把链表操作烂熟于心
而在学C++的时候,学会它的链表操作也是必须的。
其实,他们的操作大同小异
仅仅是动态内存分配的命令上的区别。
C语言的动态内存分配以库函数的形式包含在stdlib.h的头文件中
他们是malloc和free
没错,他们是天生的一对
而为了更加方便链表这种应用广泛的数据结构的操作,
C++增加了一对关键字—new和delete.
new的使用方法:
struct node
{};
int main()
{
struct node *p;
p=new node; //new后接结构体名
}
这样就比C语言中的malloc简单很多
而delete则是
delete p;
就很简单
所以建立一个单向链表完整代码如下
#include<iostream>
using namespace std;
struct node
{
int data;
struct node* next;
};
int main()
{
struct node *p,*q,*head;
int n,i;
cout<<"Please enter the ammount of listnodes";
cin>>n;
p=new node; //创建一个新的结点
q=p; //除了头结点,q永远指向p的前一个结点
head=p;
cin>>p->data;
for(i=1;i<=n;i++)
{
p=new node;
cin>>p->data;
q->next=p; //使q与p相连,拉成链子
q=p; //因为下一个循环p就走了,所以这里让q=p
}
p->next=NULL; //尾结点的next指向空,不然会出问题
return 0;
}