注册 登录
编程论坛 数据结构与算法

《整型顺序表递增有序,插入X后保持有序性》调试

huhao3225 发布于 2013-03-24 16:45, 820 次点击
1年没写C语言了,这次要学软件技术,有个问题就是《整型顺序表递增有序,插入X后保持有序性》,要求设计一算法,我写了一个程序,C语言的,算法不知道有没有问题,就是调试的时候调试不出来,如图,不能给线性表赋值,程序已经给出,太久没搞了,实在想不出来,麻烦给位美女帅哥,帮忙看一下。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXSIZE 100                //数组容量
typedef  struct
{
    int data[MAXSIZE+1];        //数组域
    int  len;                    //线性表长域
} SeqList;                        //结构体类型名
int Insert_SeqList(SeqList L,int x)

 {
    int i=0,j;
    if (L.len==MAXSIZE-1)
        return(0);
    while(i<=L.len&&L.data[i]<x)
        i++;
    for(j=L.len;j>=i;j--)
        L.data[j+1]=L.data[j];
    L.data[i]=x;
    L.len++;
    return(0);
}
main()
{
    int i,x;
    SeqList *L;
    L=(SeqList*)malloc(sizeof(SeqList));
    if(L==NULL)
        exit(0);
    L->len=0;
    printf("Please input:\n");
    for(i=1;i<=L->len;i++)
        scanf("%d",&L->data[i]);
    printf("输入插入值:\n");
    scanf("%d",&x);
    Insert_SeqList(*L,x);
    for(i=1;i<=L->len;i++)
        printf("%d ,",L->data[i]);
}
2 回复
#2
yuccn2013-03-24 18:42
L->len=0;
     printf("Please input:\n");
     for(i=1;i<=L->len;i++) 这个时候,L->len 为0 ,这个循环是无法进行的
         scanf("%d",&L->data[i])



int Insert_SeqList(SeqList L,int x) 这个函数要改成传地址,不要传值
#3
不玩虚的2013-03-24 22:31
算法有问题。1。你表的长度没有初始化。2.假设空表的时候你要要不要插入元素啊,要插得话就等于建表吧,这也不难的。3.假设表不空。表中有和你相同的元素,那你还要不要插啊。,这步只是找位置,应该不难。
1