概述
(1)编程实现单链表的基本操作:建立单链表,查找单链表,插入单链表,删除单链表;
(2)采用单链表结构编程实现:两个有序单链表的归并运算。
/*
(1)
*/
#include <iostream>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L);
void CreateList(LinkList &L,int n);
void PrintList(LinkList L);
void FoundList(LinkList L,int e);
void InsertList(LinkList &L,int i,int e);
void DeleteList(LinkList &L,int i);
using namespace std;
int main(){
int n,e,insertn,inserte,deleten;
LinkList L;
InitList(L);
cout<<"请输入单链表长度:";
cin>>n;
CreateList(L,n);
PrintList(L);
cout<<"请输入要查找的值:";
cin>>e;
FoundList(L,e);
cout<<"请输入要插入的位置:";
cin>>insertn;
cout<<"请输入要插入的值:";
cin>>inserte;
InsertList(L,insertn,inserte);
cout<<"请输入要删除的位置:";
cin>>deleten;
DeleteList(L,deleten);
return 0;
}
//初始化单链表
bool InitList(LinkList &L){
L=new LNode;
L->next=NULL;
return true;
}
//建立单链表(后插法)
void CreateList(LinkList &L,int n){
LinkList r,p;
L=new LNode;
L->next=NULL;
r=L;
cout<<"请输入单链表:";
for(int i=0;i<n;i++){
p=new LNode;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
}
//打印单链表
void PrintList(LinkList L){
LinkList p;
p=L->next;
cout<<"单链表为:";
while(p){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
//查找单链表
void FoundList(LinkList L,int e){
LinkList p;
p=L->next;
int counts=0;
while(p){
if(p->data==e){
counts++;
cout<<"第"<<counts<<"次找到了与"<<e<<"相等的值"<<endl;
}
p=p->next;
}
if(counts==0){
cout<<"没有找到与"<<e<<"相等的值"<<endl;
}
}
//插入单链表,在第i个位置插入值为e的结点
void InsertList(LinkList &L,int i,int e){
LinkList p,s;
p=L;
int counts=0;
while(p&&(counts<i-1)){
p=p->next;
counts++;
}
s=new LNode;
s->data=e;
s->next=p->next;
p->next=s;
PrintList(L);
}
//删除单链表,删除第i个位置的结点
void DeleteList(LinkList &L,int i){
LinkList s;
LinkList p=L;
int counts=0;
while(p&&(counts<i-1)){
p=p->next;
counts++;
}
s=p->next;
p->next=s->next;
delete s;
PrintList(L);
}
/*
(2)
*/
#include <iostream>
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L);
void CreateList(LinkList &L,int n);
void PrintList(LinkList L);
LinkList MergeList(LinkList A,LinkList B,LinkList &C);
using namespace std;
int main(){
int na,nb;
LinkList A;
InitList(A);
cout<<"请输入单链表长度:";
cin>>na;
CreateList(A,na);
PrintList(A);
LinkList B;
InitList(B);
cout<<"请输入单链表长度:";
cin>>nb;
CreateList(B,nb);
PrintList(B);
LinkList C;
InitList(C);
C=MergeList(A,B,C);
PrintList(C);
return 0;
}
//两个有序单链表的归并
LinkList MergeList(LinkList A,LinkList B,LinkList &C){
LinkList a,b,c;
a=A->next;
b=B->next;
C=A;
c=C;
while(a&&b){
if(a->data<=b->data){
c->next=a;
c=a;
a=a->next;
}else{
c->next=b;
c=b;
b=b->next;
}
}
c->next=a?a:b;
delete B;
return C;
}
//建立有序单链表(后插法)
void CreateList(LinkList &L,int n){
LinkList r,p;
L=new LNode;
L->next=NULL;
r=L;
cout<<"请输入单链表:";
for(int i=0;i<n;i++){
p=new LNode;
cin>>p->data;
p->next=NULL;
r->next=p;
r=p;
}
LinkList a,b;
int temp;
for(a=L->next;a!=NULL;a=a->next){
for(b=a->next;b!=NULL;b=b->next){
if(a->data>b->data){
temp=a->data;
a->data=b->data;
b->data=temp;
}
}
}
}
//初始化单链表
bool InitList(LinkList &L){
L=new LNode;
L->next=NULL;
return true;
}
//打印单链表
void PrintList(LinkList L){
LinkList p;
p=L->next;
cout<<"单链表为:";
while(p){
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
最后
以上就是合适菠萝为你收集整理的单链表的基本操作(c++实现)的全部内容,希望文章能够帮你解决单链表的基本操作(c++实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复