首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

向高手请问:此程序的目的是在顺序表中插入一个元素,为什么不能成功插入

2012-02-21 
向高手请教:此程序的目的是在顺序表中插入一个元素,为什么不能成功插入?向高手请教:::::::::::::::此程序

向高手请教:此程序的目的是在顺序表中插入一个元素,为什么不能成功插入?
向高手请教:::::::::::::::
此程序的目的是在顺序表中插入一个元素,为什么不能成功插入?
#include<stdio.h>
#include<malloc.h>
#define MAXSIZE 100
typedef int datatype;
typedef struct {
datatype data[MAXSIZE];
int last;
}Seqlist;

int Insert_Seqlist(Seqlist *L,datatype x)//插入函数 在线性表中插入数据X
{
int j;
if(L->last>MAXSIZE-1)
return 0;
j=L->last;
while((j>=0)&&(x<L->data[j]))
{L->data[j+1]=L->data[j];
j--;
}
L->data[j+1]=x;
L->last++;
return 1;
}


int main()////主函数
{
Seqlist L;
int t,j;
datatype xx,b=0;
//L = Init_Seqlist();
printf("请按从小到大输入一组数据:\n");
while(scanf("%d",&b)!=EOF)
{
//scanf("%d",&b);
L.last++;
L.data[L.last]=b;
}
printf("请输入要插入的元素:x\n");
scanf("%d",&xx);
printf("x已输入\n");/////
t=Insert_Seqlist(L,xx);  
printf("xx已输入\n");/////
if(t==1)
{
printf("以下是插入%d后的线性表数据\n",xx);
for(j=0;j<=L.last;j++)
{
printf("%10d",L.data[j]);
}
printf("\n");
}
else
{
printf("操作出现错误");
}
printf("xxxx已输入\n");///////
return 0;
}


[解决办法]
1. lz没初始化last的值,应该初始化为-1
2. if(L->last>MAXSIZE-1) 应该为 if(L->last>=MAXSIZE-1)

因为看你的程序你是想让last指向最后一个元素,而不是第一个空位

[解决办法]
初学者,不明白
[解决办法]
基本思路是正确的,调试下,应该容易发现问题。注意边界值就行。

热点排行