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

大神们,请帮忙看一下为什么这个执行时是乱码

多妹的姐姐 发布于 2015-04-19 22:07, 2017 次点击


#include "stdio.h"
#include "malloc.h"
#define  num   10


//定义结构
typedef  struct
{
    int  *data;
    int length;
   
}mylist;


//初始化
void  Initlist( mylist  &L )
{
    L.data=(int*)malloc(num*sizeof(int));   
    L.length=0;
   
}



//输出
void  output(mylist  &L)
{
    int  i;//i是输入的数据
    for(i=0;i<=L.length;i++)
    {
        printf("%d",L.data[i]);
    }
}


//创建
void  Createlist(  mylist  &L)
{
   int   i,x;//x是输入的数据,i是循环的次数
   printf("请输入线性表的数据:\n");
   for (i=0;i<num;i++)
      {
       scanf("%d",&x);
       L.data[i]=x;
       L.length++;
   }
}

//插入
void  Insertlist(mylist &L ,int  i,int  e)//在第i个位置插入元素e
{
    int error,p;
 /* if (i<0||i>L.length)
      printf("%d\n",error) ;//线性表的插入只能在n个元素之间,否则错误
  */
  for(p=i;p<=L.length;p++)
  {
      L.data[i+1]=L.data[i];
  }
      L.data[i]=e;
      L.length++;
}


//删除
void  Deletlist(mylist  &L,int i,int  e)//在第i个位置删除元素e
{
   int error,p;
  /*if (i<0||i>L.length)
      printf("%d\n",error) ;//线性表的删除只能在n个元素之间,否则错误 */
  for(p=i;p<=L.length;i++)
  {
      L.data[i-1]=L.data[i];
  }
      L.data[i]=e;
      L.length--;
  
}



void  main()
{
  int i,e;
  mylist L;

Initlist(L);  


Createlist(L);
 printf("线性表的顺序存储链表\n");
output(L);  

Insertlist(L,i,e);  
printf("请输入你要插入元素的位置\n");
scanf("%d",&i);
printf("请输入你要插入元素\n");
scanf("%d",&e);
printf("输出新的链表\n");
output(L);

Deletlist(L,i,e);
printf("请输入你要删除元素的位置\n");
scanf("%d",&i);
printf("请输入你要删除元素\n");
scanf("%d",&e);
printf("输出新的链表\n");
output(L);
 

   
}
1 回复
#2
zcdjt2015-04-20 16:48
你的插入和删除里面 L.data[i+1]=L.data[i];有错,p恒等于i了。
1