借助栈实现单链表逆置

作者在 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;
}
标题: 借助栈实现单链表逆置
时 限: 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 一般

数据结构(c语言) | 阅读 5479 次
文章评论,共0条
游客请输入验证码
浏览69251次