橙子味的萌新 2019-09-15 18:32 采纳率: 0%
浏览 483

写了链表插入函数 主函数却没实现插入功能

#include
#include
#include

#define OK 1
#define ERROR 0
#define OVERFLOW -2
using namespace std;

typedef int ElemType;
typedef int Status;

typedef struct LNode
{
ElemType data; //结点的数据域
struct LNode *next; //结点的指针域
}LNode,*Linklist; //Linklist为指向结构体LNode的指针类型

void CreateList_R(Linklist &L,int n) //正位序输入n个元素的值,建立带表头结点的单链表L
{
int i;
LNode *p,*r;
L=new LNode; //生成新结点作为头结点,用头指针L指向头结点
L->next=NULL; //先建立一个带头结点的空链表
r=L; //尾指针r指向头节点
for(i=0;i {
p=new LNode; //生成新结点
cin>>p->data; //输入元素值赋给新结点*p的数据域
p->next=NULL;
r->next=p; //将新结点*p插入尾结点*r之后
r=p; //r指向新的尾结点*p
}
}

void ListOutput(Linklist L) //输出链表
{
LNode *p;
p=L->next;
while (p != NULL)
{ cout<data<<" ";
p=p->next;
}
cout<<endl;
}

Status ListInsert(Linklist &L,int i,ElemType e) //在带头结点的单链表L中第i个位置插入值为e的新结点
{
LNode *p,*r;
int j;
p=L;
j=0;
while(p && (j {
p=p->next;
++j; //查找第i-1个结点,p指向该节点
}
if(!p||j>i-1)
return ERROR; //i>n+1或i r=new LNode; //生成新结点*m
r->data=e; //将结点*m的数据域置为e
r->next=p->next; //将结点*m的指针域指向结点ai
p->next=r; //将结点*p的指针域指向结点m
return OK;
}

void nizhi(Linklist &L)
{
LNode *s,*q;
q=L->next;
L->next=NULL; ////将链表断开分成两个链表,第二个链表不带头结点,q是头指针
while(q!=NULL)
{
s=q; //摘下第二个链表的首结点,使s指向它
q=q->next;
s->next=L->next; //将结点*s头插到链表L中
L->next=s;
}
}
int main()
{
Linklist L;
ElemType e;
int n;
int i;
cout<<"输入数据个数:"< cin>>n;
cout< cout CreateList_R(L,n);
cout ListOutput(L);
cout cin>>e;
ListInsert(L,i,e);
cout<<"插入后的线性表:"<<endl;
ListOutput(L);
cout<<"逆置:"<<endl;
nizhi(L);
ListOutput(L);
}


  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-09-15 22:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 删除和修改功能无法调用
  • ¥15 kafka topic 所有分副本数修改
  • ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
  • ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
  • ¥40 串口调试助手打开串口后,keil5的代码就停止了
  • ¥15 电脑最近经常蓝屏,求大家看看哪的问题
  • ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
  • ¥50 C++五子棋AI程序编写
  • ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
  • ¥15 SQL Server analysis services 服务安装失败