📄 shiyan1.c
字号:
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int elem;
int zhi;
struct node *next;
}sqstack;
sqstack *initstack(void);
sqstack *addstack(sqstack *p1,sqstack *p2);
void dispstack(sqstack *s);
main()
{
sqstack *p1,*p2,*p3;
p1=initstack();
p2=initstack();
p3=addstack(p1,p2);
dispstack(p3);
getch();
}
sqstack *initstack(void)
{
sqstack *front,*rear,*p;
front=malloc(sizeof(sqstack));
front->next=NULL;
rear=malloc(sizeof(sqstack));
rear->next=NULL;
rear=front;
printf("input the elems\n");
for(;;)
{
p=malloc(sizeof(sqstack));
p->next=NULL;
scanf("%d%d",&p->elem,&p->zhi);
if(p->elem==0) {free(p);break;}
else
{
rear->next=p;
rear=p;
}
}
return front;
}
void dispstack(sqstack *front)
{
front=front->next;
while(front)
{
printf("%d(%d)\n",front->elem,front->zhi);
front=front->next;
}
}
sqstack *addstack(sqstack *p1,sqstack *p2)
{
sqstack *p,*rear,*front,*rear1,*rear2;
rear1=malloc(sizeof(sqstack));
rear1=p1->next;
rear2=malloc(sizeof(sqstack));
rear2=p2->next;
p=malloc(sizeof(sqstack));
p->next=NULL;
rear=malloc(sizeof(sqstack));
front=malloc(sizeof(sqstack));
rear=front=p;
while(rear1!=NULL&&rear2!=NULL)
{
if(rear1->zhi<rear2->zhi)
{
rear=rear1;
front->next=rear;
rear1=rear1->next;
front=rear=NULL;
p1->next=rear1;
}
else
if(rear1->zhi>rear2->zhi)
{
rear=rear2;
front->next=rear;
rear2=rear2->next;
front=rear=NULL;
p2->next=rear2;
}
else
{
rear1->elem=rear1->elem+rear2->elem;
rear=rear1;
front->next=rear;
rear1=rear1->next;
rear2=rear2->next;
front=rear=NULL;
p1->next=rear1;
p2->next=rear2;
}
if(rear1==NULL)
{
rear=rear2;
front->next=rear;
}
if(rear2==NULL)
{
rear=rear1;
front->next=rear;
}
return p;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -