📄 insert_d.cpp
字号:
//InSert_DuB.cpp
# include "Find.cpp"
# include <conio.h>
# include <stdio.h>
# include <stdlib.h>
extern DuBLinkList Find(char *name);
void InSert_DuB(void)
{
int k=0;
DuBLinkList DuB_Store(DuBLinkList i,DuBLinkList top);
DuBLinkList info;
DuBLinkList info1;
char book[50];
for(;;)
{
info=(DuBLinkList)malloc(sizeof(DuBNode));
if(!info)
{
cprintf("\r\nOverflow the memory");
return ;
}
textcolor(k%2);
cprintf("\rEnter the %dth book name: ",k+1); gets(info->name);//输入书名
if(!info->name[0]) break;// 输入回车键退出输入
cprintf("\rEnter the %dth book number: ",k+1); gets(info->number);//输入书的编号
cprintf("\rEnter the %dth book price: ",k+1); gets(book);//输入书的单价
info->price=atof(book);
cprintf("\rEnter the %dth book quantity:",k+1); gets(book);//输入购入书的数量
info->sum=atoi(book);
k++;
info1=Find(info->name); //若在链表中找到相同记录
if(info1)
{
info1->sum=info1->sum+info->sum;//数量域相加作为新纪录的数量域
free(info);
}
else
start=DuB_Store(info,start);//若找不到则把记录添加
}
}
// 按字母在字母表的先后次序插入记录添加函数
DuBLinkList DuB_Store(DuBLinkList i,DuBLinkList top)
{
//i为当前的要插入的结点,top为链表头结点
DuBLinkList old,p;
if(last==NULL)//链表长为0
{ //i结点为链表头结点
i->next=NULL;
i->prior=NULL;
last=i;
return i;
}
p=top; //设置P为链表表头
old=NULL;
while(p)
{
if(strcmp(p->name,i->name)<0) //比较p与i结点的名字域
{ //若p的名字域小于新结点的名字域
old=p;
p=p->next; //p指针后移
}
else
{
if(p->prior) //i结点插入到链表的中间
{
p->prior->next=i;
i->next=p;
i->prior=p->prior;
p->prior=i;
return top;
}
i->next=p; //i结点插入到链表头
i->prior=NULL;
p->prior=i;
return i;
}
}
old->next=i; // 把i结点插入到链表的结尾
i->next=NULL;
i->prior=old;
last=i;
return start; //返回链表的头结点
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -