| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:数据结构中链表问题 大家帮忙看看这个程序哪里出问题了
只看楼主 加入收藏
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:6 
数据结构中链表问题 大家帮忙看看这个程序哪里出问题了
输入
各个命令以及相关数据,它们对应的格式如下:
在某个位置之前插入操作:insert,接下来的一行是插入的组数n,下面是n行数据,每行数据有两个值,分别代表位置与插入的元素值
清除线性表:clear
获取某个位置的元素:getelem,接下来一行是需要获取的元素位置
删除某个位置的元素:delete,接下来一行是被删除的元素位置
修改某个位置的元素:update,接下来一行是被修改的元素位置及值
打印所有元素:getallelem
当输入的命令为exit时,程序结束
输出
当输入的命令为getelem时,请输出获取的元素值,
当输入的命令是delete时,请输出被删除的那个元素值
当输入的命令是getallelem时,请输出所有元素值



# include <iostream>
# include <string>
# include <stdlib.h>
using namespace std;

typedef struct node
{
        int data;
        struct node *next;
 }Node,*linklist;
 
 int initelist (linklist &L)
 {
     
     L = new Node;
     if (L == NULL)
     return 0;
     L->next = NULL;
     return 1;      
 }
 
Node *findlinklist (linklist L,int i)//查找某个结点
{
    int j = 0;
    Node *p = L;
    while (j<i && p!=NULL)
    {
          j++;
          p = p->next;
    }
    if (j==i)
    return p;
   
    return NULL;
}

int insertlist (linklist &L,int i,int e)//插入一个新结点
{
    Node *p,*q;
    p=findlinklist ( L,i-1);
    if (p == NULL)
    return 0;
    q=new node;
    q->data = e;
    q->next = p->next;
    p->next = q;
    return 1;
}

int deletelinklist (linklist &L,int i,int &e)//删除某个结点
{
    Node *p,*q;
    p = findlinklist (L,i-1);
    if (p == NULL)
    return 0;
    q = p->next;
    if (q = NULL)
    return 1;
    e = q->data;
    p->next = q->next;
    free (q);
    return 1;
   
}

int clearlinklist (linklist &L)//清除链表
{
    L->next = NULL;
    return 1;
}

int getlinklist (linklist L,int i,int &e)//获取某个结点的值
{
    Node *p;
    p = findlinklist (L,i);
    if (p == NULL)
    return 0;
    e = p->data;
    return 1;
}

int updalinklist (linklist L,int i,int e)//更换某个结点的值
{
    Node *p;
    p = findlinklist (L,i);
    if (p == NULL)
    return 0;
    p->data = e;
    return 1;
}

void print(linklist L)//打印链表
{
     Node *p = L->next;
     while(p != NULL)
      {cout<<L->data<<" ";
        p = p->next;
      }
      cout<<endl;
      
}
int main ()
{
    linklist L;
    if (initelist(L) == 0)
        return 0;
    string s;
    Node *p;
    int n=0,m=0,q=0,e=0;
    cout<<"请输入你要的操作"<<endl;
    cin>>s;
    while (s!="exit")
{
    if (s == "insert")
    {
        cout<<"请输入你要插入的组数"<<endl;
          cin>>n;
          while (--n)
          {
              cout<<"请输入你要插入的位置和值分别用空格隔开,每行数据有两个值,分别代表位置与插入的元素值"<<endl;
               cin>>m>>q;  
               insertlist (L,m,q);
               cout<<"请继续输入要插入的位置与插入的元素值"<<endl;
          }
         
    }
    else if (s == "clear")
    {
         clearlinklist (L);
     }
     else if (s == "getelem")
     {
         cout<<"请输入你要获取值的位置"<<endl;
          cin>>m;
          getlinklist (L,m,e);
          cout<<e<<endl;
     }
     else if (s == "delete")
     {
         cout<<"请输入你要删除的位置"<<endl;
          cin>>m;
           deletelinklist (L,m,e);
          cout<<e<<endl;
     }
     else if (s == "updae")
     {
         cout<<"请输入你要更换的位置及更换的值"<<endl;
          cin>>m>>q;
          updalinklist (L,m,q);
     }
     else if (s == "getallelem")
     {
           print (L);
     }
     cin>>s;
}
    system ("pause");
    return 0;
}
运行结果不对 大侠们帮忙看看了 先谢谢了
搜索更多相关主题的帖子: insert update 线性表 
2012-11-13 13:25
丁广耀
Rank: 1
等 级:新手上路
帖 子:1
专家分:5
注 册:2012-11-13
收藏
得分:5 
哪有不对了
2012-11-13 15:45
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
收藏
得分:0 
回复 楼主 续写回忆
比如insert插入两个数 然后就直接 getallelem 输出结果不对 是个随机数 而且只有一个数  
2012-11-13 17:58
草种的幸福
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:7
专家分:5
注 册:2012-11-2
收藏
得分:5 
等我回去帮你弄弄啊
2012-11-13 21:19
续写回忆
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-5-23
收藏
得分:0 
回复 3楼 续写回忆
嗯嗯 好嘞  先谢谢了
2012-11-14 12:40
草种的幸福
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:7
专家分:5
注 册:2012-11-2
收藏
得分:0 
运行了一下你的代码,得不到想要的结果。
2012-12-01 13:08
思小宏
Rank: 1
等 级:新手上路
帖 子:9
专家分:6
注 册:2012-12-1
收藏
得分:0 
这个代码是做什么的啊??可以运行
2012-12-01 13:19
快速回复:数据结构中链表问题 大家帮忙看看这个程序哪里出问题了
数据加载中...
 
   



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

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