早教吧作业答案频道 -->其他-->
实验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)...的网友还看了以下:
值域:y=x^2-x/x^2-x+1要用分离常数法!y=(x^2-x)/(x^2-x+1)=(x^ 2020-04-09 …
高一数学指数,对数函数!要详细过程!请指教!一.求下列函数的定义域.1.y=根号下的1-3^x2. 2020-04-27 …
为了得到函数y=3*(1/3)^x 的图像 可以吧函数y=(1/3)^x的图像 为什么是向右平移1 2020-05-16 …
解方程y-2分之y-1=3-5分之y+2等(1)解方程y-(2分之y-1)=3-(5分之y+2 2020-05-16 …
求几道初二数学题,各位大侠帮帮忙啊!比较大小:1+1/√2+1/√3+……+1/√2010与√20 2020-05-20 …
4(x-y-1)=3(1-y)-2;x/2+y/3=2方程组的解,把①4(x-y-1)=3(1-y 2020-06-21 …
产品X由4单位Y和2单位Z构成,Y由3单位A和1单位B构成,Z由2单位品A和3单位品C构成.201 2020-07-09 …
几个二元一次方程组而已~2x+y=3和x-y=1;2x-3y=4和5x-3y=1;x+2y=9和3 2020-08-03 …
急求4题方程计算(请简要写出计算过程)1.1/2(x+y)+1/3(x-y)=6(1)4(x+y)- 2020-10-31 …
(x/3)-(y/4)=3,(x/2)+(y/3)=13二元一次方程.还有x-(y-1/2)=3,2 2020-11-12 …