鱼C论坛

 找回密码
 立即注册
查看: 3410|回复: 2

[已解决]顺序表的删除问题 删不了。。。。。。。。。

[复制链接]
发表于 2016-4-5 13:11:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我想删除第五个数字,为什么删除没有成功???求帮忙。。。。
#include<iostream>
#include<stdlib.h>

using namespace std;

#define OK 1
#define ERROR 0
#define MAXSIZE 100

typedef int Status;
typedef int ElemType;

typedef struct
{
        ElemType *elem;
        int length;
        
}SqList;

Status InitList_Sq(SqList &L){  
    //构造一个空的线性表L  
    L.elem = (ElemType *)malloc(MAXSIZE * sizeof(ElemType));  
    if(!L.elem)  
        exit(1);        //存储分配失败  
    L.length = 0;//空表长度为0  

               
    return OK;  
}  



Status ListInsert(SqList &L,int j,ElemType e) //顺序表的插入
{
        if((j<1)||(j>L.length+1))
                return ERROR;

        if(L.length==MAXSIZE)
                return ERROR;

        for(int u=L.length-1;u>=j-1;u--)
                L.elem[u+1]=L.elem[u];
            L.elem[j-1]=e;
                ++L.length;
                //cout<<e<< "   ";
                return OK;
}


Status ListDelete(SqList &L, int i)//顺序表的删除
{
        if((i<1)||(L.length))
                return ERROR;
        for(int j=i;j<=L.length-1;j++)
                L.elem[j-1]=L.elem[j];
        --L.length;
        return OK;
}

int LocateElem(SqList L,ElemType e)//顺序表的查找
{
        for(int i=0;i<L.length;i++)
                if(L.elem[i]==e)
                        return i+1;
                return OK;
}

Status GetElem(SqList L,int i,ElemType &e)//顺序表的取值
{
        if(i<1||i>L.length) return ERROR;
        e=L.elem[i-1];
        return OK;
}

int main()
{
        SqList L;
        InitList_Sq(L);
      for(int i=1;i<15;i++)
          {
                  ListInsert(L,i,i);
                  
          }
          cout<<endl;
         
          for(int j=1;j<L.length;j++)
          {          
                  GetElem(L,j,j);
          cout<<j<<"   ";
          }
          ListDelete(L,5);
          cout<<endl;

for(int k=1;k<L.length;k++)
          {          
                  GetElem(L,k,k);
          cout<<k<<"   ";
          }
}
最佳答案
2016-4-21 22:54:31
能不能把for后面作用的范围都加上{ } 呀。。。
然后把代码用代码格式发出来,在编辑栏点<>,然后把代码粘贴进去
现在发出来的好多缩进长度都不一致,看着好难受,而且看不出来层次。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-4-5 14:05:27 | 显示全部楼层
在删除的算法那里我把   if((i<1)||(L.length)) 改为if((i<1)||(i>L.length))  然后主函数是这样写的。。。int main()
{
        SqList L;
        InitList_Sq(L);
        for(int i=0;i<15;i++)
        {
                ListInsert(L,i+1,i+1);
                cout<<i<<endl;
        }

                ListDelete(L,1);
        for(int j=1;j<L.length;j++)
        {         
                GetElem(L,j,j);
                cout<<j<<"   ";
        }
        cout<<endl;
但是在GetElem那里输出的数是  2 4 6 8 10 12 14   奇数不见了,求分析原因。。。感激不尽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-4-21 22:54:31 | 显示全部楼层    本楼为最佳答案   
能不能把for后面作用的范围都加上{ } 呀。。。
然后把代码用代码格式发出来,在编辑栏点<>,然后把代码粘贴进去
现在发出来的好多缩进长度都不一致,看着好难受,而且看不出来层次。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-7-5 02:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表