| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 349 人关注过本帖
标题:[求助]为什么没有输出?
只看楼主 加入收藏
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
 问题点数:0 回复次数:3 
[求助]为什么没有输出?

/*利用一个栈逆置一个带头结点的单链表*/
#include <stdio.h>

#include <malloc.h>
#define maxsize 100
typedef int datatype;
typedef struct node
{datatype data;
struct node *next;
}linklist;
linklist *head;
typedef struct seqstack
{datatype d[maxsize];
int top;
}seqstack;
seqstack s;

linklist *creatlist()
{
linklist *q,*p;
int n=0;
p=q=(struct node *)malloc(sizeof(linklist));
head=p;
p->next=0;
p=(struct node *)malloc(sizeof(linklist));
scanf("%d",&p->data);
while(p->data!=-1)
{
n+=1;
q->next=p;
p=(struct node *)malloc(sizeof(linklist));
scanf("%d",&p->data);
}
q->next=0;
return (head);
}

void print(linklist *head)
{
linklist*p;
p=head->next;
if (p==0) printf("this ia an empty list.\n");
else
{do {printf("%6d",p->data);
p=p->next;
}while(p!=0);
printf("\n");
}
}

seqstack initstack()
{
s.top=-1;
return s;
}

int push(seqstack *s,datatype x)
{
if((*s).top==maxsize-1)
{printf("栈已满,不能入栈!\n");
return 0;
}
else {
(*s).top++;
(*s).d[(*s).top]=x;
return x;
}
}

datatype pop(seqstack *s)
{
datatype y;
if((*s).top==-1)
{
printf("栈已满,无法出栈!\n");
return 0;
}
else {
y=(*s).d[(*s).top];
(*s).top--;
return y;
}
}

int stackempty(seqstack s)
{
return s.top==-1;
}

int stackfull(seqstack s)
{
return s.top==maxsize-1;
}

linklist *backlinklist(linklist *head)
{
linklist *p;
p=head->next;
initstack();
while(p)
{
push(&s,p->data);
p=p->next;
}
p=head->next;
while(!stackempty(s))
{
p->data=pop(&s);
p=p->next;
}
return (head);
}

void main()
{
linklist *head;
head=creatlist();
print(head);
head=backlinklist(head);
print(head);
}

搜索更多相关主题的帖子: 输出 
2007-10-02 12:42
wudijia
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-9-24
收藏
得分:0 
不知道啊
2007-10-02 13:07
xhtang
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-10-1
收藏
得分:0 

我改了一下,可能有些地方实现起来和你的不一样,不过最后的结果应该没有错的


#include <stdio.h >
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

#define maxsize 100
typedef int datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;

linklist *head;
typedef struct seqstack
{
datatype d[maxsize];
int top;
}seqstack;
seqstack s;

linklist *creatlist()
{
linklist *q = NULL,*p = NULL;
int n=0;
int d;
//p=q=(struct node *)malloc(sizeof(linklist));
head=p;
// p->next=0;
scanf("%d", &d);
// p=(struct node *)malloc(sizeof(linklist));
//scanf("%d",&p->data);
while(d!=-1)
{
n+=1;
p=(struct node *)malloc(sizeof(linklist));
p->data = d;
if (head == NULL)
head = p;
else
q->next = p;
q = p;

//q->next=p;

scanf("%d",&d);
}
if (q != NULL)
{
q->next = NULL;
}
return (head);
}

void print(linklist *head)
{
linklist *p;
p=head;
if (p==NULL)
{
printf("this ia an empty list.\n");
}
else
{
while(p!=NULL)
{
printf("%6d",p->data);
p=p->next;
}

printf("\n");
}
}

seqstack initstack()
{
s.top=-1;
return s;
}

int push(seqstack *s,datatype x)
{
if((*s).top==maxsize-1)
{
printf("栈已满,不能入栈!\n");
return 0;
}
else
{
(*s).top++;
(*s).d[(*s).top]=x;

return x;
}
}

datatype pop(seqstack *s)
{
datatype y;
if((*s).top==-1)
{
printf("栈已满,无法出栈!\n");
return 0;
}
else
{
y=(*s).d[(*s).top];
(*s).top--;
return y;
}
}

int stackempty(seqstack s)
{
return s.top==-1;
}

int stackfull(seqstack s)
{
return s.top==maxsize-1;
}

linklist *backlinklist(linklist *head)
{
linklist *p;
p=head;
initstack();
while(p)
{
push(&s,p->data);
p=p->next;
}
p=head;
while(!stackempty(s))
{
p->data=pop(&s);
p=p->next;
}
return (head);
}

void main()
{
linklist *head;
head=creatlist();
print(head);
head=backlinklist(head);
print(head);
}


帮助别人是我的快乐! 别人帮我,我心存感激!
2007-10-02 15:54
HaPpY随心
Rank: 1
等 级:新手上路
帖 子:119
专家分:0
注 册:2007-9-28
收藏
得分:0 
谢谢,改好了
2007-10-03 15:46
快速回复:[求助]为什么没有输出?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023271 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved