| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 525 人关注过本帖
标题:C++链表插入问题
只看楼主 加入收藏
xianyun1994
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-1-31
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
C++链表插入问题
程序代码:
源码如下 应该是在void search(spra *head)函数中出的问题 大虾指点下
#include <iostream>

using namespace std;

int NodeNumber = 0;
struct spra
{
     char name;
     spra *next;
};

spra *creat(int &number);//创建链表
void search(spra *head);
void show(spra *head);//遍历
int find(spra *head);

int main()
{
     spra *head;
     int number = 0;
     head = creat (number);
     cout <<"你输入的字符数是:" <<find(head) <<endl;
     show (head);
     search(head);
     show(head);
     return 0;
}

spra *creat(int &number) //创建链表
{
        spra *head = NULL;
     spra *pend = head;
     spra *ps;
     char temp;
     cout <<"请输入字符:"<<endl;
     do
     {
         cin >>temp;
         if (temp != '#')
         {
             ps = new   spra;
             ps->name = temp;
             ps->next = NULL;
             if (head == NULL)
             {
                 head = ps;
             }
             else
             {
                 pend->next = ps;
             }
             pend = ps;
             number++;
         }
     }while (temp != '#');
     return head;
}

void show (spra *head)   //遍历
{
     cout <<"你输入的字符如下:"<<endl;
     spra *te = head;
     while (te != NULL)
     {
         cout <<te->name;
         te = te->next;
     }
     cout <<endl;
}

void search(spra *head)
{
     spra *al = head;
     spra *NewNode = new spra;
     cout <<"->"<<endl;
     NewNode->name = '!';
     while (al != NULL)
     {
         if (al->name == 'a')
         {
             NewNode->next = al->next;
             al->next = NewNode;
             search(NewNode->next);
         }
         al = al->next;
     }
}

int find(spra *head)
{
     spra *s = head;
     while(s != NULL)
     {
         NodeNumber++;
         s = s->next;
     }
     return NodeNumber;
}
搜索更多相关主题的帖子: 链表 
2010-02-15 22:27
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
void search(spra *head)实现什么功能啊?

★★★★★为人民服务★★★★★
2010-02-16 12:23
THQatSEU
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2010-2-5
收藏
得分:5 
应该是在每个a的前面加上'!'
2010-02-16 22:12
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
这是用递归,当然也可以用循环!
void search(spra *head)
{
    if (head->name=='a')
    {
        spra *NewNode = new spra;
        NewNode->name='a';
        head->name='!';
        NewNode->next=head->next;
        head->next=NewNode;
        if (head->next->next)
        {
             search(head->next->next);
        }
    }
    else
         if (head->next)
         {
             search(head->next);
         }
}

★★★★★为人民服务★★★★★
2010-02-17 14:16
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
void search(spra *head)
{
     //cout <<"->"<<endl;
     spra *al = head;
     while (al != NULL)
     {
         if (al->name == 'a')
         {
             spra *NewNode = new spra;
             NewNode->name = 'a';
             al->name='!';
             NewNode->next = al->next;
             al->next = NewNode;
             al=NewNode->next;
         }
         else
         al = al->next;
     }
}

★★★★★为人民服务★★★★★
2010-02-17 14:34
快速回复:C++链表插入问题
数据加载中...
 
   



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

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