鱼C论坛

 找回密码
 立即注册
查看: 3945|回复: 3

顺序表基本运算的一个小问题

[复制链接]
发表于 2013-4-17 16:13:55 | 显示全部楼层 |阅读模式
10鱼币
哪个鱼友  帮我看看 这个顺序表基本运算的程序最后输出的那个函数出了什么问题  怎么输出的数组最后一个元素 总是和倒数第二个元素一样啊(在线等……急急急急急急)
#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 100
typedef struct 
{
        int data[MAXSIZE];
        int len;

}list;
int main()
{
        int list_init(list *L);
    int list_insert(list *L,int i,int e);
    int list_delete(list *L,int k);
    int list_output(list *L);
        list *L;
        L=(list*)malloc(sizeof(list));
        int i,k,e;
        printf("请输入顺序链表中的所有元素:\n");
        list_init(L);
        printf("请输入要插入的位置:\n");
        scanf("%d",&i);
        printf("请输入要插入的数值:\n");
        scanf("%d",&e);
        list_insert(L,i,e);
        printf("请输入要删除的数值的位置:\n");
        scanf("%d",&k);
        list_delete(L,k);
        printf("请输出顺序链表中的所有元素:\n");
        list_output(L);

                return 0;
}
int list_init(list *L)
{
        
        int i;
        
        for(i=0;i<=MAXSIZE-1;i++)
        {
                
                scanf("%d",&(L->data[i]));
                if((L->data[i])==0)
                        return 0;
            L->len=i;


        }
        return 1;
}
int list_insert(list *L,int i,int e)
{
    int j;

        if(i<1||i>=MAXSIZE)
                return 0;

        for(j=L->len;j>=i-1;j--)
        {
                L->data[j+1]=L->data[j];
        }
        L->data[i-1]=e;
        L->len++;
        return 1;
}
int  list_delete(list *L,int k)
{
    
        if(k<1||k>MAXSIZE)
                return 0;
        int j;
        
        for(j=k-1;j<(L->len)-1;j++)
        {
                L->data[j]=L->data[j+1];
        }
        L->len--;
        return 1;
}
int  list_output(list *L)
{
        int j;
        for(j=0;j<=L->len;j++)
                printf("%d ",L->data[j]);
        system("pause");
        return 1;

}

最佳答案

查看完整内容

兄弟,del函数一点小失误而已,修改如下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-17 16:13:56 | 显示全部楼层
兄弟,del函数一点小失误而已,修改如下
int  list_delete(list *L,int k)
{

        if(k<1||k>MAXSIZE)
                return 0;
        int j;

        for(j=k-1;j<(L->len);j++)   //循环少了一轮哈
        {
                L->data[j]=L->data[j+1];
        }
        L->len--;
        return 1;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-4-17 16:54:33 | 显示全部楼层

你这还真速度 哈    我能告诉你 我自己也找出来了吗?哈哈   但是这分  给你也值  谢啦  有你真好啊!!每次都能很快帮到我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-4-17 20:47:28 | 显示全部楼层
权志龙_爱死你la 发表于 2013-4-17 16:54
你这还真速度 哈    我能告诉你 我自己也找出来了吗?哈哈   但是这分  给你也值  谢啦  有你真好啊!!每 ...

分不分都不重要,自己能调试找出错误才是好!每天进步一点,加油
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 08:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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