📄 4.cpp
字号:
#include "head.h"
//删除
//(4.1)删除指定线性表中的第i个数据元素的函数
void creat41(h_list &lead)
{
int i=0,j=1,temp=0,e=0; //e为要删除的第几个元素
link p,q;
char moniker[12];
printf("请输入要删除元素的线性表的名字:");
scanf("%s",moniker);
for(i=0;i<lead->length;i++)
{
temp=strcmp(lead->assistant[i]->name,moniker);
if(!temp) break;
}
if(!temp) printf("有此线性表!!!\n");
else
{
printf("无此线性表!!!\n");
return;
}
printf("请输入要删除线性表的数据:");
scanf("%d",&e);
p=lead->assistant[i]->tou; //q,p扫描
q=p->next;
while (p->next && j<e) //循环结束时p不可能为空
{
p=p->next; //p后移,指向下一个位置
j++;
}
if (e<1||p->next==NULL) //删除点错误
{
printf("删除点错误!!!");
return;
}
q=p->next; //q指向删除结点
p->next=q->next; //从链表中摘出
free(q); //释放结点空间
printf("成功删除该结点!!");
}
//删除
//(4.2)删除指定线性表中的满足某种条件的数据元素的函数
void creat42(h_list &lead)
{
int i=0,temp=0,e=0; //e为需要删除的元素
link p,q;
char moniker[12];
printf("请输入要删除元素的线性表的名字:");
scanf("%s",moniker);
for(i=0;i<lead->length;i++)
{
temp=strcmp(lead->assistant[i]->name,moniker);
if(!temp) break;
}
if(!temp) printf("有此线性表!!!\n");
else
{
printf("无此线性表!!!\n");
return;
}
printf("请输入要删除线性表的数据:");
scanf("%d",&e);
q=lead->assistant[i]->tou; //q,p扫描
p=q->next;
while(p && p->data!=e) //查找元素为e的结点
{
q=p; //记住前一个结点
p=p->next; //查找下一个结点
}
if (p) //有元素为e的结点
{
q->next=p->next; //删除该结点
free(p); //释放结点所占的空间
printf("成功删除该结点!!");
}
else
printf("没有删除该结点!!"); //没有删除结点
}
//数据元素删除函数
void main4(h_list &lead)
{
int choice=1,e=0,i=0;
while (choice!=0)
{
printf(" ////////////////////////////////////////////////// \n");
printf(" // 请输入数字 0 到 2 选择: // \n");
printf(" // 1. 删除指定线性表中的第i个数据元素 // \n");
printf(" // 2. 删除指定线性表中的满足某种条件的数据元素// \n");
printf(" // 0. 退出程序!!! // \n");
printf(" // 请输入你的选择: // \n");
printf(" ////////////////////////////////////////////////// \n");
scanf("%d",&choice);
system("cls");
switch (choice)
{
case 1: creat41(lead);break; //删除指定线性表中的第i个数据元素
case 2: creat42(lead);break; //删除指定线性表中的满足某种条件的数据元素
case 0: break;
default: printf("输入错误!!!\n");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -