📄 stack.cpp
字号:
void nipr(slink q)
{
slink p=q->prior;
cout<<"该栈为:";
while(p!=q)
{
cout<<p->data;
cout<<(char)32;
p=p->prior;
}
cout<<kg;
}
slink inis()
{
slink p;
p=(slink)malloc(sizeof(snode));
if(!p) return NULL ;
p->prior=p->next=p;
return p;
}
void prints(slink S)
{
slink p;
if(S->prior==S->next)
{
cout<<"空栈!"<<endl;
}
else
{
cout<<"该栈为:"<<endl;
p=S->next;
while(p!=S)
{
cout<<p->data;
cout<<(char)32;
p=p->next;
}
}
cout<<kg;
}
void creats(slink &S)
{
S=inis();
slink p;
cout<<"输入任意字符,以 0 结束!"<<endl;
cout<<"例如 :abc0 (中间也可以用空格!)"<<endl;
cout<<"依次输入: ";
while (true)
{
p = (slink)malloc(sizeof(snode));
if(!p) exit(0);
cin>>p->data;
if (p->data=='0')break;
p->prior=S;
p->next=S->next;
S->next->prior=p;
S->next=p;
}
cout<<"创建成功!"<<endl;
prints(S);
}
void gettop(slink S,elemtypes &c)
{
if(S->prior==S->next)
cout<<"栈空"<<endl;
e=S->next->data;
}
void push(slink S,elemtypes c)
{
slink p;
p=(slink)malloc(sizeof(snode));
p->data=c;
p->prior=S;
p->next=S->next;
S->next->prior=p;
S->next=p;
}
void push1(slink S,slink p)
{
p->prior=S;
p->next=S->next;
S->next->prior=p;
S->next=p;
}
void pop(slink S,elemtypes &c)
{
slink p;
p=S->next;
c=p->data;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
void pop1(slink S)
{
slink p;
p=S->next;
p->prior->next=p->next;
p->next->prior=p->prior;
free(p);
}
status getes(slink S,int i,elemtypes &c)
{
int j=1;
slink p=S->next;
while(p!=S&&j<i)
{
p=p->next;
j++;
}
if(p==S)
return 0;
c=p->data;
return 1;
}
void destroys(slink &S)
{
slink q,p=S->next;
while(p!=S)
{
q=p->next;
free(p);
p=q;
}
S->next=S->prior=S;
}
void traverses(slink L,void (*visit)(elemtypes &c))
{
slink p=S->next;
while(p!=S)
{
visit(p->data);
p=p->next;
}
prints(S);
}
void uprs(elemtypes &c)
{
c=c>='a'&&c<='z'?c-32:e;
//cout<<(int)e<<(char)32;
}
void chas()
{
int b;
cout<<"你想查找第几个元素:"<<endl;
cin>>b;
s=getes(S,b,c);
if(s)
{
cout<<"第"<<b<<"个元素是"<<c<<endl;
prints(S);
}
else
{
cout<<"你要查找的数不存在!"<<endl;
prints(S);
}
}
int match()
{
char c;
elemtypes e;
S=inis();
cout<<"输入任意字符,以 0 结束!"<<endl;
cin>>c;
while(c!='0')
{
if((c=='[')||(c=='(')||(c=='{'))
push(S,c);
else if(c==']')
{
pop(S,e);
if(e!='[')
return 0;
}
else if(c=='}')
{
pop(S,e);
if(e!='{')
return 0;
}
else if(c==')')
{
pop(S,e);
if(e!='(')
return 0;
}
cin>>c;
}
if(S->prior==S->next)
return 1;
else
return 0;
}
void pipei()
{
int s=match();
if(s) cout<<"括号匹配 "<<endl;
else cout<<"不匹配 "<<endl;
flag=1;
}
void charus(slink S)
{
slink p;
cout<< "输入任意字符,以'0'结束!"<<endl;
cout<<" 依次输入: ";
for(;;)
{
p=(slink)malloc(sizeof(snode));
cin>>p->data;
if(p->data=='0')break;
push1(S,p);
}
prints(S);
}
void shanchus(slink S)
{
int n,i;
cout<<"你想删除的个数:"<<endl;
cin>>n;
for(i=0;i<n;i++)
pop1(S);
prints(S);
}
void hebing()
{
slink S1;
creats(S);
creats(S1);
slink p,q,r;
r=S->prior;
p=S1->next;
q=S1->prior;
p->prior=r;
r->next=p;
q->next=S;
S->prior=q;
prints(S);
}
int selects()
{
int n;
cout<<" *********************************************************************** "<<endl;
cout<<" * 1.创建 * "<<endl;
cout<<" * 2.合并 * "<<endl;
cout<<" * 3.查找 * "<<endl;
cout<<" * 4.批量插入 * "<<endl;
cout<<" * 5.批量删除 * "<<endl;
cout<<" * 6.逆序 * "<<endl;
cout<<" * 7.遍历(大小写转换) * "<<endl;
cout<<" * 8.括号匹配 * "<<endl;
cout<<" * 9.返回上一层 * "<<endl;
cout<<" * 0.退出 * "<<endl;
cout<<" *********************************************************************** "<<endl;
cout<<" 选择你想进行的操作: "<<endl;
cout<<"请选择0~9!"<<endl;
cin>>n;
for(;;)
{
if(n<0||n>9)
{
cout<<"重选"<<endl;
cin>>n;
}
else
break;
}
return n;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -