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

顺序表程序一运行就出现顺序表.exe停止工作

2012-06-16 
顺序表程序一运行就出现顺序表.exe停止工作 求高手指教!程序编译没报错大意是通过键盘使用scanf语句输入自

顺序表程序一运行就出现顺序表.exe停止工作 求高手指教!
程序编译没报错
大意是通过键盘使用scanf语句输入自己想要输入的顺序表元素 
想输入五个元素 然后在第六个位置插入99 
可惜一运行 输入一个5之后就显示 顺序表.exe 停止工作了 

分为主函数跟头文件
 主函数:
 #define maxsize 100 
typedef int datatype;
 #include<stdio.h>
 #include"hh.h"
 void main()
 {
 sqlist mylist;
 int n,x,i;
 printf("enter the number of elements:");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  printf("enter the %st number:",i+1);
  scanf("%d",&x);
  mylist.list[i]=x;
 }
 //insert(&l,6,99);
 printf("print l:\n");
 print(&mylist);
 }
============================================
头文件#include"hh.h"
 typedef struct
 {
 datatype list[maxsize];
  int length;
 }sqlist;
 void initiate(sqlist *l)
 {
 l->length=0;
 } 
int length(sqlist *l)
 {
 return l->length;
 }
 int insert(sqlist *l,int i,datatype x)
 {
 int j;
 if(l->length==maxsize)
 {
  printf("已满元素不可插!\n");
  return 0;
 }
 else if(i<1 || i>l->length+1)
 {
  printf("参数出错!\n");
  return 0;
 }
 else
 {
  for(j=l->length-1;j>=i-1;j--)
  l->list[j+1]=l->list[j];
  l->list[i-1]=x;
  l->length++;
  return 1;
 }
 }
 int deletewithoutx(sqlist *l,int i)
 {
 int j;
 if(l->length==0)
 {
  printf("表是空的,不可删!\n");
  return 0;
 }
 else if(i<1 || i>l->length)
 {
  printf("参数出错!\n");
  return 0;
 }
 else
 {
  for(j=i;j<=l->length-1;j++)
  l->list[j-1]=l->list[j];
  l->length--;
  return 1;
 }
 }
 
int deletewithx(sqlist *l,int i,datatype *x)
 {
 int j;
 if(l->length==0)
 {
  printf("表示空的,元素不可删!\n");
  return 0;
 }
 else if(i<1 || i>l->length)
 {
  printf("参数出错!\n");
  return 0;
 }
 else
 {
  *x=l->list[i-1];
  for(j=i/* 这里是要将第i个后面的一个数字向前移前,覆盖第i个元素*/;j<=l->length-1;j++)
  l->list[j-1]=l->list[j];
  l->length--;
  return 1;
 }
 }
 void print(sqlist *l)
 {
 int i;
 for(i=0;i<=l->length-1;i++)
  printf("%d",l->list[i]);
 printf("\n");
 }
 求高手指教!感激不尽

[解决办法]
你的main函数里面mylist。length没有初始化,insert要依赖于length

热点排行