- 1.头插法创建单链表
- 2. 尾插法创建单链表
- 3.单链表长度
- 4.单链表删除操作
- 5.单链表插入操作
- 6.单链表逆置
- 7.单链表遍历
- 8.主函数部分
- 9.完整代码
LK creat_TList(){
LK head,p;
head=new LinkList;
head->next=NULL;
int x;
cin>>x;
while(x!=-1){
p=new LinkList;
p->data=x;
p->next=head->next;
head->next=p;
cin>>x;
}
return head;
}
2. 尾插法创建单链表
LK creat_WList(){
LK head,p,r;
head=new LinkList;
head->next=NULL;
r=head;
int x;
cin>>x;
while(x!=-1){
p=new LinkList;
p->data=x;
p->next=r->next;
r->next=p;
r=p;
cin>>x;
}
r->next=NULL;
return head;
}
3.单链表长度
void listlength(LK head){
LK L;
L=head->next;
while(L){
length++;
L=L->next;
}
}
4.单链表删除操作
LK delet(LK head){
LK L,p;
L=head;
int flag;
cin>>flag;
//flag=1 按位置删除
if(flag==1){
int k;
cin>>k;
if(k>length) return head;
for(int i=0;i
L=L->next;
}
p=new LinkList;
p=L->next;
L->next=p->next;
free(p);
length--;
}
//flag=2 按元素删除
else if(flag==2){
int x;
cin>>x;
while(L->next&&L->next->data!=x){
L=L->next;
}
//如果删除链表中指定元素
p=new LinkList;
p=L->next;
L->next=p->next;
free(p);
length--;
}
return head;
}
5.单链表插入操作
LK insertx(LK head){
LK L,p;
L=head;
int k,x;
cin>>k>>x;
if(k>length+1) return head;
for(int i=0;i
L=L->next;
}
p=new LinkList;
p->data=x;
p->next=L->next;
L->next=p;
length++;
return head;
}
6.单链表逆置
LK inversion_List(LK head){
LK p,L,r;
r=head->next;
L=new LinkList;
L->next=NULL;
while(r){
p= new LinkList;
p->data=r->data;
p->next=L->next;
L->next=p;
r=r->next;
}
free(head);
return L;
}
7.单链表遍历
void Printf_List(LK head){
LK L;
L=head->next;
while(L){
cout<data<<" ";
L=L->next;
}
}
8.主函数部分
int main(){
LK head1,head2;
head1=new LinkList;
head1=creat_TList();
Printf_List(head1);
cout<
9.完整代码
#include
using namespace std;
typedef struct LinkList{
int data;
struct LinkList *next;
}LinkList,*LK;
int length;
//头插法创建单链表
LK creat_TList(){
LK head,p;
head=new LinkList;
head->next=NULL;
int x;
cin>>x;
while(x!=-1){
p=new LinkList;
p->data=x;
p->next=head->next;
head->next=p;
cin>>x;
}
return head;
}
//尾插法创建单链表
LK creat_WList(){
LK head,p,r;
head=new LinkList;
head->next=NULL;
r=head;
int x;
cin>>x;
while(x!=-1){
p=new LinkList;
p->data=x;
p->next=r->next;
r->next=p;
r=p;
cin>>x;
}
r->next=NULL;
return head;
}
//单链表长度
void listlength(LK head){
LK L;
L=head->next;
while(L){
length++;
L=L->next;
}
}
//单链表删除
LK delet(LK head){
LK L,p;
L=head;
int flag;
cin>>flag;
//flag=1 按位置删除
if(flag==1){
int k;
cin>>k;
if(k>length) return head;
for(int i=0;i
L=L->next;
}
p=new LinkList;
p=L->next;
L->next=p->next;
free(p);
length--;
}
//flag=2 按元素删除
else if(flag==2){
int x;
cin>>x;
while(L->next&&L->next->data!=x){
L=L->next;
}
//如果删除链表中指定元素
p=new LinkList;
p=L->next;
L->next=p->next;
free(p);
length--;
}
return head;
}
//插入新元素
LK insertx(LK head){
LK L,p;
L=head;
int k,x;
cin>>k>>x;
if(k>length+1) return head;
for(int i=0;i
L=L->next;
}
p=new LinkList;
p->data=x;
p->next=L->next;
L->next=p;
length++;
return head;
}
//单链表逆序输出
LK inversion_List(LK head){
LK p,L,r;
r=head->next;
L=new LinkList;
L->next=NULL;
while(r){
p= new LinkList;
p->data=r->data;
p->next=L->next;
L->next=p;
r=r->next;
}
free(head);
return L;
}
//遍历单链表
void Printf_List(LK head){
LK L;
L=head->next;
while(L){
cout<data<<" ";
L=L->next;
}
}
int main(){
LK head1,head2;
head1=new LinkList;
head1=creat_TList();
Printf_List(head1);
cout<
如有错误,希望各位大佬及时纠正一下!
希望能帮到更多的人!



