一道顺序表的实验题的反思
来源:互联网 发布:数据接口功能 编辑:程序博客网 时间:2024/04/30 21:03
一开始写了个代码,输出结果表示莫名奇妙,
<img src="http://img.blog.csdn.net/20160313133738316?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
#include<stdio.h>#include<stdlib.h>#define maxn 20typedef struct table_type{int a[maxn];int length;} table_type;table_type *table;//o123,length=4,1,2,3,4,a[2]jfrom 4 to 2,table_type *Insert(table_type *table,int x,int i){int j;for( j=table->length;j>i-1;j--){table->a[j]=table->a[j-1];}table->a[--j]=x;table->length++; }table_type *Print(table_type *table){for(int i=0;i<table->length;i++){printf("%d",table->a[i]);}printf("\n");return table;}void Delete(table_type *table,int x){int i=0;while(table->a[i]!=x)i++;for(int j=i;j<table->length;j++){table->a[j]=table->a[j+1];}table->length--;}int main(){table=(table_type*)malloc(sizeof(struct table_type));table->length=0;int i=0,t;while(scanf("%d",&t)==1&&t!=-1){table->a[i]=t;i++;table->length++;}Print(table);Insert(table,0,2);Print(table);}
后来发现,for循环里的j循环结束后的值是j-1而不是j,真是糊涂了
正确代码:
<pre name="code" class="cpp">#include<stdio.h>#include<stdlib.h>#define maxn 20typedef struct table_type{int a[maxn];int length;} table_type;table_type *table;table_type *Print(table_type *table){for(int i=0;i<table->length;i++){printf("%d",table->a[i]);}printf("\n");return table;}table_type *Insert(table_type *table,int x,int i){int j;for( j=table->length;j>i-1;j--){table->a[j]=table->a[j-1];}table->a[i-1]=x;table->length++; Print(table);}void Delete(table_type *table,int x){int i=0;while(table->a[i]!=x)i++;for(int j=i;j<table->length;j++){table->a[j]=table->a[j+1];}table->length--;Print(table);}int main(){table=(table_type*)malloc(sizeof(struct table_type));table->length=0;int i=0,t,x;printf("pelase init the table\n"); while(scanf("%d",&t)==1&&t!=-1){table->a[i]=t;i++;table->length++;}Print(table);printf("******************************\n"); printf("|-Please enter a command code!|\n");printf("|input a new data ,enter 1 |\n");printf("|delete a data, enter 2 |\n"); printf("|quit the system, enter 0 |\n");printf("******************************\n"); for(;;){scanf("%d",&t);if(t==0) break;if(t==1){scanf("%d %d",&x,&i);Insert(table,x,i);} else {scanf("%d",&x);Delete(table,x); }}}
0 0
- 一道顺序表的实验题的反思
- 一道ACM题目的反思
- 一道面试题的反思
- 关于一道Special Judge输出的题的反思
- 一道笔试题,引发我的基础问题的反思
- 统计回文--一道面试题的反思
- 关于国外微积分教改实验的反思
- 一道程序题的反思——一些为了减少内存的开销
- 一道C++试题的出题考虑和考后反思
- 一道简单有趣的java题:输出顺序的问题
- 一道题关于构造析构的顺序
- 实验二~顺序表的实现
- 【实验】两个有序顺序表的合并
- 线性表的顺序存储实验程序
- 实验1 线性表的顺序实现
- [实验一] 顺序表的基本操作
- 实验一:顺序表的实现
- 实验一顺序表的实现
- 从零开始OGRE
- Java 直接选择排序
- 分数化小数2
- 第三周项目-个人所得税计算器
- 使用RxJava来改进用户体验
- 一道顺序表的实验题的反思
- C语言如何编写可变参数函数(涉及到二级指针)
- 数组的地址(指针)
- 剑指offer-二进制中1的个数
- awk工具的使用
- java的多态
- 防止脱发的具体方法
- hdoj 循环多少次? 1799 (DP)
- CATransition 的初级应用及type属性