问题描述
- 创建单链表并利用栈将其逆置...小白求大神帮改一下多谢。
-
建立单链表时输入链表数据(字符数据)以‘#’号结束。
#include
#include
#define M 20
typedef struct
{
char data[M];
int top;
}SeqStack;typedef struct lnode
{
char data;
struct lnode*next;
}LNode,*LinkList;SeqStack*Init_SeqStack()
{
SeqStack*s;
s=(SeqStack*)malloc(sizeof(SeqStack));
s->top=-1;
return s;
}int Push_SeqStack(SeqStack*s,char x)
{
if(s->top==M-1)
return 0;
else
{
s->top++;
s->data[s->top]=x;
return 1;
}
}int Empty_SeqStack(SeqStack*s)
{
if(s->top==-1)
return 1;
else return 0;
}int Pop_SeqStack(SeqStack*s,char&x)
{
if(Empty_SeqStack(s))
return 0;
else{
x=s->data[s->top];
return 1;
}
}LinkList Creat_LinkList()
{
LinkList L;
L=(LinkList)malloc(sizeof(LNode));
L->next=NULL;
return L;
}int main()
{char x; LinkList L; LNode*s,*r; SeqStack*S; S=Init_SeqStack(); L=Creat_LinkList(); r=L; while(1) { s=(LinkList)malloc(sizeof(LNode)); scanf("%c",&(s->data)); if(s->data=='#') { break; } r->next=s; r=s; } r->next=NULL; s=L; while(s->next!=NULL) { s=s->next; Push_SeqStack(S,s->data); } s=L; while(!Empty_SeqStack(S)) { s=s->next; Pop_SeqStack(S,s->data); } s=L; while(s->next!=NULL) { s=s->next; printf("%c ",s->data); }
}
解决方案
http://blog.sina.com.cn/s/blog_4ad9dfe60100xy9c.html
解决方案二:
http://zhidao.baidu.com/link?url=HrjuqKWePmt122qaM678rozMrnINMuh7rZdjAkyXeOtMFm4zfEFzeFe8VPMS1SMcu2ANON51CQkhT1oXcTstca
http://blog.sina.com.cn/s/blog_4ad9dfe60100xy9c.html