链表是由连在一起的小容器组成。
容器一般由结构体或者类创建。
类: cop
class Link{
public:
int elem;//数据域
Link *next;//指针域
};
结构体:
struct Link{
int elem;
Link *next;
};
代码如下:
#include<iostream>
using namespace std;
class Link{
public:
int elem;
Link *next;
Link(){
next = NULL;
}
};
int main(){
int n;
cout<<"请输入线性表的数目"<<endl;
cin >> n;
Link *node = NULL;
Link *Head = NULL;
Link *pre =NULL;
for ( int i=0;i<n;i++ ){
node = new Link;
cin >> node->elem; //输入数据并存入数据域
//添加一步:指针指向下一结点的地址
//这里就需要一个Head指针来判断当前位置是否为第一个结点
if ( Head==NULL )
Head = node; //若第一个结点Head还未被设置,将node的地址保存在Head中
else
pre->next = node; //pre指针指向node,pre是前一个结点的位置,node是当前结点的位置
pre = node; //node变为pre,pre的地址变为这个node的地址,继续向前存储数据
if ( i==n )
pre->next = NULL;
}
//输出存储的数据
pre = Head;//输出前先把当前位置指向第一个节点的地址
cout << endl;
for ( int i=1; pre!=NULL; i++){
//p->NULL时,则链表到头,为什么i=1呢
cout <<"elem_"<< pre->elem << endl;
pre = pre-> next;
}
//释放空间,不能直接删除指针pre,否则会丢失接下来的结点的地址
Link*d;
pre = Head;
while (pre!=NULL){
d = pre;
pre =pre->next ;
delete d;
}
return 0;
}