回 帖 发 新 帖 刷新版面

主题:[讨论]帮看看简单的程序

运行有错:
#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个回复)

沙发

运行有错:
#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;
}

亲爱的“要浴缸”同志,基础漏的多,再仔细去研究一下书哦 ~        


板凳

运行出错是因为你给一个指针变量进行写操作,分配一个字符串数组好了。

另外,你那个不是链表,有点像堆栈,但又不是,把头结点都丢掉了。

下面的统计操作根本是个死循环,好好改~

3 楼


#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;
}






我来回复

您尚未登录,请登录后再回复。点此登录或注册