| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 347 人关注过本帖
标题:顺序表出错
取消只看楼主 加入收藏
未微电子
Rank: 2
来 自:丹霞地貌
等 级:论坛游民
帖 子:47
专家分:57
注 册:2013-2-24
结帖率:88.89%
收藏
已结贴  问题点数:5 回复次数:0 
顺序表出错
#include<stdio.h>


//宏定义类型

#define LISTSIZE 100

typedef struct xx
{
    int items[LISTSIZE];
    int length;
}SqList;


//插入
int LIstInsert (SqList *L, int pos, int item)
{
    //L为顺序表指针,pos为插入的位置,item为插入的元素
    int i;

    if (L->length >= LISTSIZE)
    {
        printf("顺序表已经满,无法进行插入操作!");
        return 0;
    }

    if (pos <= 0 || pos > L->length + 1)
    {
        printf("出入的位置不合法,其取值范围应该是[1,length + 1]");
        return 0;
    }

    for (i = L->length - 1; i >= pos - 1; i--)
    {
        L->items[i+1] = L->items[i];
    }

    L->items[pos-1] = item;
    L->length++;

    return 1;
}

//删除
int LIstDelete (SqList *L, int pos1, int *item1)
{
    //L为顺序表的指针,pos为删除的位置,用于item返回被删除的元素

    int i;

    if (L->length == 0)
    {
        printf("顺序表为空,无法进行删除操作");
        return 0;
    }

    if (pos1 < 1 || pos1 > L->length)
    {
        printf("删除位置不合法,取值范围应该是[1, length]");
        return 0;
    }

    *item1 = L->items[pos1 - 1];
    for (i = pos1; i < L->length; i++)
    {
        L->items[i-1] = L->items[i];
    }
    L->length--;
    return 1;

}

//查找

int find (SqList *L, int item2)
{
    int pos = 0;

    if (L->length == 0)
    {
        printf("顺序表为空,无法进行查找操作");
        return 0;
    }

    while (pos < L->length && L->items[pos] != item2) pos++;
   
    if (pos < L->length)   
    return pos + 1;
    else   
    return 0;
}

//主函数

int main(void)
{
    int i, pos, item, pos1, item1, item2;
    SqList L;
    L.length = 10;

    printf("请输入10个数");
    for (i = 0; i < 10; i++)
    {
        scanf("%d", &L.items[i]);
        
    }
   

    //插入
    printf("输入插入的位置,插入的元素:");
    scanf("%d%d", &pos, &item);
   
    if (!LIstInsert (&L, pos, item) )
        printf("error");
   

            printf("输出新的顺序表:\n");
        for (i = 0; i < L.length; i++)
        {
            printf("%d ", L.items[i]);
        }
        printf("\n");
   

    //删除
    printf("请输入删除的位置:\n");
    scanf("%d", &pos1);

    if (LIstDelete (&L, pos1, &item1) != 1)
        printf("error");
   
    else
    {
        printf("被删除的元素:%d\n", item1);
        printf("输出新的顺序表:\n");
        for (i = 0; i < L.length; i++)
        {
            printf("%d ", L.items[i]);
        }
        printf("\n");
    }

    //查找
    printf("请输入查找的元素:");
    scanf("%d", &item2);
    if (find (&L, item2) == 0)
    printf("没有查找到元素item2\n");
    else
    printf("查找的元素位置为 %d\n", find (&L, item2));

    return 0;


}
搜索更多相关主题的帖子: pos include return pos include return 
2013-03-17 16:57
快速回复:顺序表出错
数据加载中...
 
   



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

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