c语言编程 数据结构题
用两个链式栈实现入栈出栈操作,如一个链式栈入栈是12345然后出栈,同时把出栈的元素进入另一个栈中,最后把另一个栈中的元素全部输出12345...
用两个链式栈实现入栈出栈操作,如一个链式栈入栈是12345然后出栈,同时把出栈的元素进入另一个栈中,最后把另一个栈中的元素全部输出12345
展开
1个回答
展开全部
C语言实现链式栈,进行两个栈的进出栈操作,并分别输出栈的内容,参考代码如下:
#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode {
int data;
struct Lnode *next;
} Lnode, *Linklist;
void Print(Linklist list);
void Push(Linklist list,int data);
int Pop(Linklist list,int *data);
void Delete(Linklist list);
int main(void)
{
Linklist s,t;
int data;
s=(Lnode *)malloc(sizeof(Lnode));
t=(Lnode *)malloc(sizeof(Lnode));
if(s==NULL||t==NULL)
return 1;
s->next=NULL;
t->next=NULL;
Push(s,1);
Push(s,2);
Push(s,3);
Push(s,4);
Push(s,5);
printf("链表s=");
Print(s);
printf("链表t=");
Print(t);
Pop(s,&data);
Push(t,data);
Pop(s,&data);
Push(t,data);
Pop(s,&data);
Push(t,data);
Pop(s,&data);
Push(t,data);
Pop(s,&data);
Push(t,data);
printf("链表s=");
Print(s);
printf("链表t=");
Print(t);
Delete(s);
Delete(t);
return 0;
}
void Push(Linklist list,int data)
{
Lnode *p=(Lnode *)malloc(sizeof(Lnode));
if(p==NULL)exit(1);
p->data=data;
p->next=list->next;
list->next=p;
}
int Pop(Linklist list,int *data)
{
Lnode *p=list->next;
if(p==NULL) return 0;
list->next=p->next;
*data=p->data;
free(p);
return 1;
}
void Print(Linklist list)
{
Lnode *p;
for(p=list->next; p!=NULL; p=p->next)
printf("%d",p->data);
printf("\n");
}
void Delete(Linklist list)
{
Lnode *p=list->next,*q;
while(p!=NULL) {
q=p;
p=p->next;
free(q);
}
list->next=NULL;
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询