c语言借助栈单链表逆置,借助栈实现单链表逆置--数据结构

标题:

借助栈实现单链表逆置

时 限:

1000 ms

内存限制:

10000 K

总时限:

3000 ms

描述:

用链式存储实现栈的初始化、入栈、出栈、取栈顶、判栈空等操作,在主函数中借助栈的基本操作逆置单链表。

输入:

线性表的长度:n

该线性表中的元素:a1

a2

...

an

输出:

逆置后的线性表为:an

...

a2

a1

输入样例:

10

安弥邵 10000001 女 28 计43 一般

宰觅 10000002 男 23 计79 健康

顾健 10000003 男 27 计29 一般

宓顽芳 10000004 女 20 计17 健康

能纸垄 10000005 男 18 计11 健康

米倍庐 10000006 女 18 计38 神经衰弱

养句电 10000007 女 19 计96 神经衰弱

牛议 10000008 男 18 计92 一般

堵侥 10000009 男 27 计35 健康

支脸蕉 10000010 男 21 计58 健康

输出样例:

支脸蕉 10000010 男 21 计43 健康

堵侥 10000009 男 27 计79 健康

牛议 10000008 男 18 计29 一般

养句电 10000007 女 19 计17 神经衰弱

米倍庐 10000006 女 18 计11 神经衰弱

能纸垄 10000005 男 18 计38 健康

宓顽芳 10000004 女 20 计96 健康

顾健 10000003 男 27 计92 一般

宰觅 10000002 男 23 计35 健康

安弥邵 10000001 女 28 计58 一般

#include

#include

#include

typedef struct Student

{

char name[10];

char num[10];

char sex[3];

int

age;

char grade[10];

char health[10];

} StudentType;

typedef StudentType DataType;

typedef struct snode

{

DataType data;

struct snode

*next;

} LSNode;

void StackInitiate(LSNode **head)//初始化堆栈

{

*head=(LSNode

*)malloc(sizeof(LSNode));

(*head)->next=NULL;

}

int StackNotEmpty(LSNode *head)//判断堆栈非空

{

if(head->next==NULL)return 0;

else return 1;

}

int StackPush(LSNode *head,DataType x)//入栈

{

LSNode *p;

p=(LSNode

*)malloc(sizeof(LSNode));

p->data=x;

p->next=head->next;

head->next=p;

return 0;

}

int StackPop(LSNode *head,DataType *d)//出栈

{

LSNode

*p=head->next;

head->next=p->next;

*d=p->data;

free(p);

return 0;

}

//int StackTop(LSNode *head,DataType *d)//取堆栈顶元素

//{

//  LSNode

*p=head->next;

//

//  *d=p->data;

//

//  return 1;

//}

int main(void)

{

LSNode *head;

int n;

int i;

DataType x;

StackInitiate(&head);

scanf("%d",&n);

for(i=0;

i

{

scanf("%s",x.name);

scanf("%s",x.num);

scanf("%s",x.sex);

scanf("%d",&x.age);

scanf("%s",x.grade);

scanf("%s",x.health);

StackPush(head,x);

}

while(StackNotEmpty(head))

{

StackPop(head,&x);

printf("%s %s %s %d %s

%s\n",x.name,x.num,x.sex,x.age,x.grade,x.health);

}

return 0;

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值