标签:
#include <iostream>
using namespace std;
//单个节点
struct List{
int data; //数据
List * pNext; //下一个节点
};
//向后追加
void push_back(List *&pRoot,int data){
auto tempNode = new List;
tempNode->data = data;
tempNode->pNext = NULL;
if(pRoot==NULL){
pRoot = tempNode;
}else{
auto t_node = pRoot;
while (t_node->pNext!=NULL) {
t_node = t_node->pNext;
}
t_node->pNext = tempNode;
}
}
//弹出最后一个
void pop(List *pRoot){
if(pRoot==NULL){return;}
auto t_node = pRoot;
while (t_node->pNext->pNext!=NULL) {
t_node = t_node->pNext;
}
delete t_node->pNext;
t_node->pNext = NULL;
}
//释放
void release(List *&pRoot){
if(pRoot==NULL){return;}
auto t_node = pRoot;
while(t_node!=NULL){
auto temp = t_node->pNext;
delete t_node;
t_node = NULL;
t_node = temp;
}
pRoot=NULL;
}
//遍历
void prontList(List * pRoot){
if(pRoot==NULL){
cout<<"该链表为空!"<<endl;
return;
}
auto t_node = pRoot;
while (t_node!=NULL) {
cout<<"["<<t_node->data<<"]";
t_node = t_node->pNext;
}
}
//创建单向链表
List * createList(int data[],int len){
List * pRoot = NULL; //根
for(int i=0;i<len;i++){
push_back(pRoot,data[i]);
}
return pRoot;
}
int main(){
cout<<"请输入节点数:"<<endl;
int num; cin>>num; (num>100)?num=100:(num<1)?num=1:num;
int * data = new int[num];
cout<<"请输入"<<num<<"个节点的数据:"<<endl;
for(int i=0;i<num;i++){
cin>>data[i];
}
cout<<"单向链表创建中...."<<endl;
auto list = createList(data,num);
cout<<"创建完成,打印如下:"<<endl;
prontList(list);
cout<<"\n资源释放中...."<<endl;
release(list);
delete[] data;
data = NULL;
cout<<"资源释放成功!"<<endl;
return 0;
}
标签:
原文地址:http://www.cnblogs.com/spriteZ/p/5591289.html