早教吧作业答案频道 -->其他-->
实验1单链表操作基本要求(1)建立头指针为h的带表头结点的单链表;(2)输出单链表的数据域值;(3)输入x,y,在第一个x之后插入结点y,若无结点x,则在表尾插入结点y(输出插
题目详情
实验1 单链表操作
【基本要求】
(1)建立头指针为h的带表头结点的单链表;
(2)输出单链表的数据域值;
(3)输入x,y,在第一个x之后插入结点y,若无结点x,则在表尾插入结点y(输出插入之后的单链表数据域值);
(4)输入k,删除单链表中所有结点值等于k的结点,并输出被删结点的个数。
【测试数据要求】
(1)单链表长度大于10,且表中元素要有重复值。
(2)输入至少两组x,y,分别满足:找到x,在x之后插入;找不到x,在表尾插入。
(3)输入三组k值,分别满足表中删除k的个数等于0,等于1 和大于1三种情况。
【实现提示】
前插法建立单链表:建立链表时新结点总插在表中第一个结点之前;
后插法建立单链表:新结点总是插在表中最后一个结点之后,此时最好另设一尾指针,指向当前最后一个结点。
删除k结点时,需知道前驱结点的指针。
急!急!跪求!
【基本要求】
(1)建立头指针为h的带表头结点的单链表;
(2)输出单链表的数据域值;
(3)输入x,y,在第一个x之后插入结点y,若无结点x,则在表尾插入结点y(输出插入之后的单链表数据域值);
(4)输入k,删除单链表中所有结点值等于k的结点,并输出被删结点的个数。
【测试数据要求】
(1)单链表长度大于10,且表中元素要有重复值。
(2)输入至少两组x,y,分别满足:找到x,在x之后插入;找不到x,在表尾插入。
(3)输入三组k值,分别满足表中删除k的个数等于0,等于1 和大于1三种情况。
【实现提示】
前插法建立单链表:建立链表时新结点总插在表中第一个结点之前;
后插法建立单链表:新结点总是插在表中最后一个结点之后,此时最好另设一尾指针,指向当前最后一个结点。
删除k结点时,需知道前驱结点的指针。
急!急!跪求!
▼优质解答
答案和解析
是用C还是C++?
你没说的话,只能给你个参考程序!
#include <iostream>
using namespace std;
typedef char ElemType;
typedef int Status;
#define OK 1
#define ERROR 0
typedef struct Lnode
{
ElemType data;
struct Lnode *next;
}Lnode,*LinkList;
void Creat_List(LinkList L)//创建单链表并输入元素
{
LinkList p;
char ch;
cout<<"请输入链表元素,并且以输入#表示结束!"<<endl;
while(cin>>ch&&ch!='#')
{
p=(LinkList)malloc(sizeof(Lnode));
if(!p)
{
cout<<"获取内存失败"<<endl;
exit(ERROR);
}
p->data=ch;//尾插法
L->next=p;
L=p;
}
L->next=NULL;
}
void output_List(LinkList L)//遍历单链表(输出单链表元素)
{
LinkList p;
p=L->next;
if(p==NULL)
{
cout<<"该链表是空链表!"<<endl;
exit(ERROR);
}
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
}
void List_Delete(LinkList L,int i)//删除指定位置的元素
{
LinkList q;
if(i<1)
{
cout<<"删除位置非法(过小)!"<<endl;
exit(ERROR);
}
int j=0;
while(L!=NULL&&j<i-1)
{
L=L->next;
j++;
}
if(L->next==NULL)
{
cout<<"删除位置非法(过大)!"<<endl;
exit(ERROR);
}
q=L->next;
L->next=q->next;
free(q);
}
void List_Inster(LinkList L,int i,ElemType e)//在指定位置插入元素
{
LinkList s;
int j=0;
while(L!=NULL&&j<i-1)
{
L=L->next;
j++;
}
if(!L||j>i-1)
{
cout<<"插入位置非法!"<<endl;
exit(ERROR);
}
s=(LinkList)malloc(sizeof(Lnode));
s->data=e;
s->next=L->next;
L->next=s;
}
Status main()
{
LinkList H;
H=(LinkList)malloc(sizeof(Lnode));
H->next=NULL;
Creat_List(H);
output_List(H);
int n;
cout<<"请输入要删除的元素的位置!"<<endl;
cin>>n;
List_Delete(H,n);
cout<<"删除元素后的链表为:"<<endl;
output_List(H);
cout<<"请输入插入的位置和元素!"<<endl;
ElemType m;
cin>>n>>m;
List_Inster(H,n,m);
output_List(H);
return 0;
}
看了实验1单链表操作基本要求(1)...的网友还看了以下:
在数据通信中,利用电话交换网与调制解调器进行数据传输的方法属于A.频带传输B.宽带传输C.基带传 2020-05-23 …
计算机网络系统的远程通信通常是( )A.频带传输B.宽带传输C.基带(数字)传输D.基带(模拟)传输 2020-05-24 …
在数据通信中,利用电话交换网与调制解调器进行数据传输的方法属于________。A.频带传输B.宽带 2020-05-24 …
在计算机网络系统的远程通信中,通常采用的传输技术是()。A.基带传输B.宽带传输C.频带传输D.窄带 2020-05-24 …
在计算机网络系统的远程通信中,通常采用的传输技术是(11)。A.光纤传输B.宽带传输C.基带传输D. 2020-05-26 …
皮带轮尺寸求算电动机转速1450转/分,皮带轮直径280CM,减速箱速比1:5,被动轮500CM, 2020-07-03 …
在网络中“宽带传输”,“基带传输”,“频带传输”各是什么… 2020-07-05 …
关于数学乘法小数点末尾该不该去掉0的问题、、请问大家:在做小数末尾带0应用题的时候,在什么情况下不 2020-07-31 …
有关城市交通运输主要特点的叙述:①交通运输点、线、面紧密结合②交通运输客、货并重,早晚上下班时间是运 2020-11-28 …
1写出八个不带[秋字]而描写秋天特征的词语2写出8个词尾带[师]的词语33月14日下午2点3刻,当代 2021-01-12 …