作者在 2011-06-15 13:27:18 发布以下内容
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node{
char name[10];
char number[15];
char sex[5];
char age[5];
char _class[5];
char health[10];
struct node *next;
}link,*linkptr;
typedef struct lin{
linkptr base;
linkptr top;
//linkptr last;
}linstack;
void initlstack(linstack &p)
{
linkptr q;
q=(linkptr)malloc(sizeof(link));
if(!q)exit(1);
q->next=NULL;
p.base=p.top=q;
}
void pushli(linstack &p,int num)
{
linkptr q;
int k=0;
while(k<num)
{
q=(linkptr)malloc(sizeof(link));
if(!q)exit(1);
scanf("%s%s%s%s%s%s",q->name,q->number,q->sex,q->age,q->_class,q->health);
//p.last=p.top;
p.top->next=q;
p.top=q;
//p.top->next=NULL;
k++;
}
}
void popli(linstack &p)
{
linkptr q1,q2;
q1=p.base;q2=p.base->next;
while(q2!=p.top)
{
q1=q2;
q2=q1->next;
}
printf("%s %s %s %s %s %s\n",p.top->name,p.top->number,p.top->sex,p.top->age,p.top->_class,p.top->health);
free(p.top);
p.top=q1;
}
int emptyli(linstack &p)
{
if(p.top==p.base)
return 1;
else return 0;
}
int main()
{
linstack p;
int num;
scanf("%d",&num);
initlstack(p);
pushli(p,num);
while(!emptyli(p))
{
popli(p);
}
return 0;
}
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct node{
char name[10];
char number[15];
char sex[5];
char age[5];
char _class[5];
char health[10];
struct node *next;
}link,*linkptr;
typedef struct lin{
linkptr base;
linkptr top;
//linkptr last;
}linstack;
void initlstack(linstack &p)
{
linkptr q;
q=(linkptr)malloc(sizeof(link));
if(!q)exit(1);
q->next=NULL;
p.base=p.top=q;
}
void pushli(linstack &p,int num)
{
linkptr q;
int k=0;
while(k<num)
{
q=(linkptr)malloc(sizeof(link));
if(!q)exit(1);
scanf("%s%s%s%s%s%s",q->name,q->number,q->sex,q->age,q->_class,q->health);
//p.last=p.top;
p.top->next=q;
p.top=q;
//p.top->next=NULL;
k++;
}
}
void popli(linstack &p)
{
linkptr q1,q2;
q1=p.base;q2=p.base->next;
while(q2!=p.top)
{
q1=q2;
q2=q1->next;
}
printf("%s %s %s %s %s %s\n",p.top->name,p.top->number,p.top->sex,p.top->age,p.top->_class,p.top->health);
free(p.top);
p.top=q1;
}
int emptyli(linstack &p)
{
if(p.top==p.base)
return 1;
else return 0;
}
int main()
{
linstack p;
int num;
scanf("%d",&num);
initlstack(p);
pushli(p,num);
while(!emptyli(p))
{
popli(p);
}
return 0;
}
标题: | 借助栈实现单链表逆置 |
时 限: | 1000 ms |
内存限制: | 10000 K |
总时限: | 3000 ms |
描述: | 用链式存储实现栈的初始化、入栈、出栈、取栈顶、判栈空等操作,在主函数中借助栈的基本操作逆置单链表。 |
输入: |
线性表的长度:n a2 ... an |
输出: |
逆置后的线性表为:an ... a2 a1 |
输入样例: |
10 安弥邵 10000001 女 28 计43 一般 |
输出样例: |
支脸蕉 10000010 男 21 计43 健康 |