鱼C论坛

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

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

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

  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. #define MAXSIZE 100
  4. typedef struct
  5. {
  6.         int data[MAXSIZE];
  7.         int len;

  8. }list;
  9. int main()
  10. {
  11.         int list_init(list *L);
  12.     int list_insert(list *L,int i,int e);
  13.     int list_delete(list *L,int k);
  14.     int list_output(list *L);
  15.         list *L;
  16.         L=(list*)malloc(sizeof(list));
  17.         int i,k,e;
  18.         printf("请输入顺序链表中的所有元素:\n");
  19.         list_init(L);
  20.         printf("请输入要插入的位置:\n");
  21.         scanf("%d",&i);
  22.         printf("请输入要插入的数值:\n");
  23.         scanf("%d",&e);
  24.         list_insert(L,i,e);
  25.         printf("请输入要删除的数值的位置:\n");
  26.         scanf("%d",&k);
  27.         list_delete(L,k);
  28.         printf("请输出顺序链表中的所有元素:\n");
  29.         list_output(L);

  30.                 return 0;
  31. }
  32. int list_init(list *L)
  33. {
  34.        
  35.         int i;
  36.        
  37.         for(i=0;i<=MAXSIZE-1;i++)
  38.         {
  39.                
  40.                 scanf("%d",&(L->data[i]));
  41.                 if((L->data[i])==0)
  42.                         return 0;
  43.             L->len=i;


  44.         }
  45.         return 1;
  46. }
  47. int list_insert(list *L,int i,int e)
  48. {
  49.     int j;

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

  52.         for(j=L->len;j>=i-1;j--)
  53.         {
  54.                 L->data[j+1]=L->data[j];
  55.         }
  56.         L->data[i-1]=e;
  57.         L->len++;
  58.         return 1;
  59. }
  60. int  list_delete(list *L,int k)
  61. {
  62.    
  63.         if(k<1||k>MAXSIZE)
  64.                 return 0;
  65.         int j;
  66.        
  67.         for(j=k-1;j<(L->len)-1;j++)
  68.         {
  69.                 L->data[j]=L->data[j+1];
  70.         }
  71.         L->len--;
  72.         return 1;
  73. }
  74. int  list_output(list *L)
  75. {
  76.         int j;
  77.         for(j=0;j<=L->len;j++)
  78.                 printf("%d ",L->data[j]);
  79.         system("pause");
  80.         return 1;

  81. }
复制代码

最佳答案

查看完整内容

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

  3.         if(k<1||k>MAXSIZE)
  4.                 return 0;
  5.         int j;

  6.         for(j=k-1;j<(L->len);j++)   //循环少了一轮哈
  7.         {
  8.                 L->data[j]=L->data[j+1];
  9.         }
  10.         L->len--;
  11.         return 1;
  12. }
复制代码


想知道小甲鱼最近在做啥?请访问 -> 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-5-1 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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