链表在一定程度上弥补了数组的不足,高效的利用了存储空间。是结构体与指针的结合。
简单链表示例
#include <iostream>
using namespace std;
struct student{
int id;
char name[20];
float score;
student *next;
};
void main()
{
student *head;
student stu1={1,"xiaoming",59.5,NULL},stu2={2,"angelababy",61,NULL},stu3={3,"xiaohong",99,NULL};
head = &stu1;
stu1.next= &stu2;
stu2.next= &stu3;
stu3.next= NULL;
}
创建链表的函数
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
struct student{
int id;
char name[20];
float score;
student *next;
};
student * createList()
{
int n;
student *pstu;
student *pre=NULL;
cout<<"请输入节点个数:"<<endl;
cin>>n;
while(n)
{
pstu = new student;
cout<<"请输入学号 姓名 成绩"<<endl;
cin>>pstu->id>>pstu->name>>pstu->score;
pstu->next=pre;
pre=pstu;
n--;
}
return pstu;
}
void main()
{
}
输出链表的数据
#include <iostream>
using namespace std;
struct student{
int id;
char name[20];
float score;
student *next;
};
student * createList()
{
int n;
student *pstu;
student *pre=NULL;
cout<<"请输入节点个数:"<<endl;
cin>>n;
while(n)
{
pstu = new student;
cout<<"请输入学号 姓名 成绩"<<endl;
cin>>pstu->id>>pstu->name>>pstu->score;
pstu->next=pre;
pre=pstu;
n--;
}
return pstu;
}
void showList(student *head){
student *p = head;
while(p!=NULL){
cout<<p->id<<p->name<<p->score;
p=p->next;
}
}
void main()
{
student *p ;
p =createList();
showList(p);
}
节点的插入
#include <iostream>
using namespace std;
struct student{
int id;
char name[20];
float score;
student *next;
};
student * createList()
{
int n;
student *pstu;
student *pre=NULL;
cout<<"请输入节点个数:"<<endl;
cin>>n;
while(n)
{
pstu = new student;
cout<<"请输入学号 姓名 成绩"<<endl;
cin>>pstu->id>>pstu->name>>pstu->score;
pstu->next=pre;
pre=pstu;
n--;
}
return pstu;
}
void showList(student *head){
student *p = head;
while(p!=NULL){
cout<<p->id<<p->name<<p->score;
p=p->next;
}
}
void insert(student *head ,student *insert){
student *temp = head->next;
if(head==NULL){
head->next=insert;
}
head->next= insert;
insert->next= temp;
}
void main()
{
student *p ;
p =createList();
student cha= {12,"insert",122,NULL};
insert(p,&cha);
showList(p);
}
删除链表节点
#include <iostream>
using namespace std;
struct student{
int id;
char name[20];
float score;
student *next;
};
student * createList()
{
int n;
student *pstu;
student *pre=NULL;
cout<<"请输入节点个数:"<<endl;
cin>>n;
while(n)
{
pstu = new student;
cout<<"请输入学号 姓名 成绩"<<endl;
cin>>pstu->id>>pstu->name>>pstu->score;
pstu->next=pre;
pre=pstu;
n--;
}
return pstu;
}
void showList(student *head){
student *p = head;
while(p!=NULL){
cout<<p->id<<p->name<<p->score<<'\n';
p=p->next;
}
}
void insert(student *head ,student *insert){
student *temp = head->next;
if(head==NULL){
head->next=insert;
}
head->next= insert;
insert->next= temp;
}
student * delect(student *head ){
student *temp1 = head->next;
student *temp2 = temp1->next;
head=temp1;
return head;
}
void main()
{
student *p ;
p =createList();
student cha= {12,"insert",122,NULL};
insert(p,&cha);
p = delect(p);
showList(p);
}