数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
来源:互联网 发布:sql where in 编辑:程序博客网 时间:2024/05/22 05:30
/*程序*/
#include<iostream>
using namespace std;struct node //创建节点
{
int date;
node *next;
};
class list //创建链表
{
int Length; //记录链表长度
node *head,*s,*p,*temp; //创建头结点 新节点 移动节点 临时节点
public:
list(){head=NULL;Length=0;} //构造函数 使头结点为空
int inser(); //插入
void output(); //打印
int LengthOut(){return Length;} //返回链表的长度
~list(){delete s;} //析构
};
int list::inser() //在链表的第i个元素之前插入元素e
{
int e, i;
p=head;
cout<<"e:";
cin>>e;
cout<<"i:";
cin>>i;
s=new node(); //动态分配新节点
s->date=e;
if(Length==0) //当链表为空时无论在哪插入都视为头结点
{ head=s;; ++Length; return Length;}
else if(i<=Length) //判断插入位置是否合理
{ for(int j=1;j<=Length;++j)
{
if(i==1) //在第一位插入时 新插入的节点作为新的头结点
{ head=s; s->next=p; ++Length; return Length;break;}
if(j==i-1)
{
temp=p->next;
p->next=s;
s->next=temp;
++Length;
return Length;
break;
}//if
p=p->next;
}//for
}//if
else
cout<<"ERROR"<<endl;
}
void list::output() //打印链表
{
cout<<"list: ";
for(p=head;p!=NULL;p=p->next)
cout<<p->date<<" ";
cout<<endl;
}
int main()
{
list a;
int aLength;
while (1)
{
a.inser();
a.output();
aLength=a.LengthOut();
cout<<"链表a的长度为:"<<aLength<<endl<<endl;
}
return 0;
}
————————————————————————————————————————
/*算法2.20*/
int list::inser() //在链表的第i个元素之前插入元素e
{
int e, i;
p=head;
cout<<"e:";
cin>>e;
cout<<"i:";
cin>>i;
s=new node(); //动态分配新节点
s->date=e;
if(Length==0) //当链表为空时无论在哪插入都视为头结点
{ head=s;; ++Length; return Length;}
else if(i<=Length) //判断插入位置是否合理
{ for(int j=1;j<=Length;++j)
{
if(i==1) //在第一位插入时 新插入的节点作为新的头结点
{ head=s; s->next=p; ++Length; return Length;break;}
if(j==i-1)
{
temp=p->next;
p->next=s;
s->next=temp;
++Length;
return Length;
break;
}//if
p=p->next;
}//for
}//if
else
cout<<"ERROR"<<endl;
}
阅读全文
1 0
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
- 编写算法实现建立一个带头结点的含n个元素的双向循环链表H,并在链表H中的第i个位置插入一个元素e
- 向带头结点的双向链表中第i个位置之前插入元素e
- 单链表--在第i个位置前插入元素e
- (2)单链表的操作 ① 输入一组整型元素序列,使用尾插法建立一个带有头结点的单链表。 ② 实现该线性表的遍历。 ③ 在该单链表的第i个元素前插入一个整数。 ④ 删除该单链表中的第i个元素,其值通过参数
- 数据结构的一些基本操作(在表L中插入第i个元素e. 操作成功返回OK,失败时返回ERROR,删除表L中第i个元素,结果用e返回. 操作成功返回OK,失败时返回ERROR)
- 带头结点的单链表和不带头结点的单链表的倒数第K个节点
- 算法与数据结构--在顺序线性表L中查找第1个值与e满足compare()的元素的为序--算法2.5
- 算法与数据结构--在顺序线性表L中查找第1个值与e满足compare()的元素的为序--算法2.5
- 删除带头结点的双循环链表p中第i个结点
- 在单链表的第i个位置插入一个新结点
- 数据结构之算法2.6-在顺序线性表L中查找第1个值与e满足compare()的元素的位序
- C语言实现单链表的节点插入(带头结点)
- 经典算法与数据结构的c++实现——带头结点的单链表
- 单链表的实现(带头结点)
- 单链表的实现(带头结点)
- 带头结点的单链表实现
- 用C++实现数据结构二 带头结点的单链表
- 程序网站
- 【NOJ】[1003] 矩阵链乘法
- MYSQL练习1
- 【LeetCode】C# 40、Combination Sum II
- Session何时创建
- 数据结构 P38 算法实现 在带头结点的单链表的第i个元素插入元素e
- hibernate之注解2
- 分享一个有意思的英语小故事
- 网络流(1)——最大流、最小割
- 【数位DP】HDU4507[吉哥系列故事——恨7不成妻]题解
- KMP算法
- 矩阵快速幂(校赛)
- 在Ubuntu 16.04下安装g2o
- 七种循环方式实现题目