方法很简单:你讲两个饥竖栈都传进去,类似于 : int pus(SeqStack1 *s, DataType* x1, SeqStack2 *s, DataType* x2)(SeqStack1是你的第一个栈,SeqStack2是第二个栈,DataType是你需要传进去的数据衡肢销的类型),然后在这个函数里面先判断x1 ,x2是否为空,如果为空,则他对应的那个栈不需要压栈,如果不为空,则执咐游行相应的压栈操作。
创新互联主要从事成都网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务荔湾,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18980820575
不明白继续追问!
/*
这是关于栈的操作
那么应该定义一个栈类型
栈中包含两个元素
栈顶指针
栈底指针
以下是修改后的,行核竖供参考
*/
# include stdio.h
# include stdlib.h
# include string.h
struct link
{
char name[40];
int age;
struct link * next;
};
typedef struct link Node;
typedef Node * List;
typedef struct Stack
{
List pTop;
List pBottom;
}STACK,* PSTACK;
void init(PSTACK pS)//初始化栈
{
pS-pTop = (Node *)malloc(sizeof(Node));
if (NULL == pS-pTop)
{
printf("动态内存分配失败!\n");
exit(-1);
}
else
{
pS-pBottom = pS-pTop ;
pS-pTop-next = NULL;
}
return;
}
/*入栈*/
void push(PSTACK pS,char * name,int age)
{
List p;
p=(Node*)malloc(sizeof(Node));/*申请新节点*/
if(p==NULL)
{
printf("error\n");
exit(1);
}
strcpy(p-name,name);/*将数据传入新节点*/
p-age=age;
p-next=pS-pTop;
pS-pTop=p;
return ;
}
//遍历栈,只档大是访问栈中元素的值,
//遍历完成后,栈中的元素个数是不会改变的
void traverse(PSTACK pS)
{
List p = pS-pTop;
while (p != pS-pBottom)
{
printf("%s%5d\n",p-name,p-age);
p = p-next ;
}
printf("\n");
return;
}
bool empty(PSTACK pS)
{
if (pS-pTop == pS-pBottom)
{
return true;
}
else
return false;
}
//出栈,将栈顶元素弹出,
//弹出后,栈中元素个数减少
//注意与 遍历栈 的区别
bool pop(PSTACK pS)
{
if (empty(pS))
{
return false;
}
else
{
List r = pS-pTop;
char * name = r-name;
printf("本次出栈元素的\nname=%s",name);
int age = r-age;
printf("\nage=%d",age);
pS-pTop = r-next;
free(r);
r = NULL;
return true;
}
}
void main()
{
STACK s;
printf("栈初始化操作\n");
init(s);
printf("开始压栈操作\n");
int len;
printf("请输入需要压入栈中的元素的个数:");
scanf("%d",len);
int i;
for (i=0; ilen; ++i)
{
printf("第%d个\n",(i+1));
printf("name:\t");
char name[40];
scanf("%s",name);
printf("age:\t");
int age;
scanf("%d",age);
push(s,name,age);
}
printf("遍历栈......\n");
traverse(s);
printf("弹出栈顶元素\n");
pop(s);
printf("\n弹出后重新遍历栈\n");
traverse(s);
}
/*
----
栈初始化操作
开始压栈操作
请输入需要压入栈中的元素的个数:3
第1个
name: 许褚
age: 55
第2个
name: 徐晃
age: 66
第3个
name: 张氏咐辽
age: 22
遍历栈......
张辽 22
徐晃 66
许褚 55
弹出栈顶元素
本次出栈元素的
name=张辽
age=22
弹出后重新遍历栈
徐晃 66
许褚 55
-----
*/