使用指针模拟链表数据结构
#include<iostream>
using namespace std;
struct node
{
int data;
node *next;
};
node *head = {NULL};
void del_by_data(int del_data) //从链表头向后查找,找到del_data并删除
{
node *p= NULL,*pre=NULL;
p=head;
while(p!=NULL)
{
if(del_data==p->data)
{
if(pre!=NULL)
pre->next=p->next;
if(p==head)
head=p->next;
delete p;
return ;
}
pre=p;
p=p->next;
}
return ;
}
void add_rear(int add_data) //在链表末尾加入一个元素
{
if(head!=NULL)
{
node *add_point,*tmp_point;
add_point==new node;
add_point->data==add_data;
add_point->next==NULL;
tmp_point=head;
while(tmp_point->next!=NULL)
tmp_point=tmp_point->next;
tmp_point->next=add_point;
}
else
{
head= new node;
head->data=add_data;
head->next=NULL;
}
}
void add_front(int add_data) //在链表前端加入一个元素
{
if(head!=NULL)
{
node *add_point;
add_point=new node;
add_point->data=add_data;
add_point->next=head;
head=add_point;
}
else
{
head=new node;
head->data=add_data;
head->next=NULL;
}
}
void output()
{
node *p;
p=head;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<"\n";
}
int main() //演示链表的操作
{
int ins,data;
while(1)
{
cout<<"1.Insert a value in front \n";
cout<<"2.Insert a value in rear \n";
cout<<"3.Delete a value \n";
cout<<"4.Quit \n";
cin>>ins;
switch(ins)
{
case 1:
cout<<"Please insert a value:";
cin>>data;
add_front(data);
break;
case 2:
cout<<"Please insert a value:";
cin>>data;
add_rear(data);
break;
case 3:
cout<<"Please insert a value:";
cin>>data;
del_by_data(data);
return 0;
}
output();
}
return 0;
}