c++单链表
#include<bits/stdc++.h>//单链表
using namespace std;
struct Node
{
int data;
Node *next;
};
typedef Node* NODE;
NODE p,head,tail;
int n;
void out()//输出函数
{
p=head->next;
while(p->next!=NULL)
{
cout<<p->data<<endl;
p=p->next;
}
cout<<p->data<<endl;
}
void change()//修改
{
cin>>n;
p=head->next;
while(p->next!=NULL)
{
if(p->data==n)
{
p->data=999;// 查找后要做的修改
}
p=p->next;
}
}
void getdata()//取出第i个节点,还可改为操作第i个节点
{
int js=1;
cin>>n;
p=head->next;
for(;js<n&&p!=NULL;js++,p=p->next)
{}
if(js==n&&p!=NULL)
{
cout<<p->data<<endl;
}
else
{
cout<<"不存在第i个节点"<<endl;
}
}
void insertdata()//把n插入到第i个节点之后
{
int i,js=1;
cin>>i>>n;
p=head->next;
for(;js<i&&p!=NULL;js++,p=p->next)
{}
if(js==i&&p!=NULL)
{
NODE s=new Node;
s->data=n;
s->next=p->next;
p->next=s;
}
else
{
cout<<"不存在第i个节点";
}
}
void deletedata()//删除第n个元素
{
cin>>n;
int js=1;
NODE s;
p=head->next;
for(;js<n-1&&p!=NULL;js++,p=p->next)
{}
if(js==n-1&&p!=NULL)
{
s=p->next;
p->next=p->next->next;
free(s);//释放空间
}
else
{
cout<<"不存在第i个节点";
}
}
void len()//计算链表长度
{
p=head->next;
int js=0;
for(;p!=NULL;p=p->next,js++;)
{}
cout<<js<<endl;
}
int main()
{
head=new Node;
head->data=0;
tail=head;
for(;;)
{
cin>>n;
if(n==-1)//用-1跳出输入
{
break;
}
p=new Node;//此时tail和p已经 不! 同!
p->data=n;
p->next=NULL;
tail->next=p;//相当于
tail=p;//head、和下一轮的tail的赋值
}
out();
//使用时调用下面 ↓ 对应的函数即可
//insertdata();
//getdata();
//change();
//deletedata();
//len();
out();
return 0;
}
大概就是这样。
快马加鞭君为先,自古英雄出少年。