主题:[讨论]帮看看简单的程序
yygkko
[专家分:330] 发布于 2006-09-19 22:24:00
运行有错:
#include<iostream>
using namespace std;
struct node
{
node*next;
char data;
};
int main()
{
char* c="yaoyugang";
cout<<"请输入字符串c:";
cin>>c;
//cout<<"输入字符的个数:";
//cin>>n;
node*p=NULL;
while(*c)//建立字符链表
{
node*s=new node;
s->data=*c++;
//cin>>s->data;
s->next=p;
p=s;
}
int i=0;
while(p!=NULL)//求链表的结点数
{
i++;
}
cout<<i<<endl;
return 0;
}
帮改改,谢谢.
回复列表 (共3个回复)
沙发
xieyong456 [专家分:2620] 发布于 2006-09-20 13:01:00
运行有错:
#include<iostream>
using namespace std;
struct node
{
node*next;
char data;
};
int main()
{
char* c="yaoyugang";
cout<<"请输入字符串c:";
cin>>c;
//cout<<"输入字符的个数:";
//cin>>n;
node*p=NULL; //哪里冒出来的node?
while(*c)//建立字符链表
{
node*s=new node;
s->data=*c++;
//cin>>s->data;
s->next=p;
p=s;
}
int i=0;
while(p!=NULL)//求链表的结点数
{
i++; //汗,不继续下去,怎么求哦
}
cout<<i<<endl;
return 0;
}
这个该过的我是用C的,自己再该一下输入输出函数
#include<stdio.h>
typedef struct node
{
char data;
struct node *next;
}node;
int main(void)
{
char *c="yaoyugang";
int i;
node *head,*p,*s;
head=(node *)malloc(sizeof (node));//这里创建一个头结点空间
p = head; // 结构构件更合理点
while(*c)//建立字符链表
{
s=(node *)malloc(sizeof (node));
s->data=*c++;
p->next = s;
p=s;
}
p->next = NULL; //结束了,否则没屁股了
printf("\n");
p = head->next; //这里要重新复制
i = 0;
while(p!=NULL)//求链表的结点数
{
printf("%c", p->data);
i++;
p=p->next;
}
printf("\n%d ", i);
return 0;
}
亲爱的“要浴缸”同志,基础漏的多,再仔细去研究一下书哦 ~
板凳
argentmoon [专家分:13260] 发布于 2006-09-20 13:14:00
运行出错是因为你给一个指针变量进行写操作,分配一个字符串数组好了。
另外,你那个不是链表,有点像堆栈,但又不是,把头结点都丢掉了。
下面的统计操作根本是个死循环,好好改~
3 楼
勇敢之心 [专家分:0] 发布于 2006-09-21 13:54:00
#include<iostream>
using namespace std;
struct node
{
node *next;
char data;
};
int main()
{
char* c="yaoyugang";
cout<<"请输入字符串c:";
cin>>c;
//cout<<"输入字符的个数:";
//cin>>n;
node *p=NULL;
while(*c!='\0')//建立字符链表
{
node *s=new node;
s->data=*c++;
//cin>>s->data;
s->next=p;
p=s; //你在此处的赋值没起作用
}
int i=0;
while(p!=NULL)//求链表的结点数(你没有搞清楚P此时指向哪里)
{
i++;
}
cout<<i<<endl;
return 0;
}
下面是正确的程序
#include<iostream>
using namespace std;
struct node
{
node *next;
char data;
};
int main()
{
char *c,str[100];
cout<<"请输入字符串c: ";
cin>>str;
c=str;
//cout<<"输入字符的个数:";
//cin>>n;
node *head; //创建一个头指针以便访问链表
node *p;
head=new node;
p=head;
while(*c!='\0')//建立字符链表
{
node *s=new node;//创建的这个指针用来接收数据
//如果更严格点需要加上判断语句,增强容错性能
//就是if(s==NULL){cout<<"..." ;exit(0);}
s->data=*c++;
//cin>>s->data;
p->next=s;
p=s;
}
p->next=NULL;
int i=0;
p=head;
while(p->next)//求链表的结点数
{
p=p->next;
i++;
}
cout<<i<<endl;
return 0;
}
我来回复