#include<stdio.h>
#include<string.h>
#define MAXSIZE 100
void sq_ins(struct sqlist *L,int i,char x);
struct sqlist{
char a[MAXSIZE+1];
int n;
};
int main(){
struct sqlist num;
int i;
char x;
int d;
printf("请输入线性表的长度:");
scanf("%d",&num.n);
getchar();
printf("请输入线性表内容:");
for(i=0;i<num.n;i++){
scanf("%c",&num.a[i]);
}
getchar();
printf("请输入要插入的字符:\n");
scanf("%c",&x);
getchar();
printf("请输入要插入的位置:\n");
scanf("%d",&d);
getchar();
sq_ins(&num,d,x);
for(i=0;i<num.n;i++){
printf("%c",num.a[i]);
}
return 0;
}
void sq_ins(struct sqlist *L,int i,char x){
int j;
if(L->n==MAXSIZE)
printf("溢出");
else if(i<1||i>(L->n+1))
printf("插入位置错");
else{
for(j=L->n;j>=i-1;j--){
L->a[j+1]=L->a[j];
}
(L->a[i-1])=x;
(L->n)++;
}
}
用C结构实现了一个基本的插入算法,过程真的很曲折,从开始看老师的出问题,到后来把点运算符变成了指针运算符。
发现进入不了循环,开始调试,知道想进入函数直接在函数开始和结束设置断点就可以。
在调试中看出i和d始终为0,知道问题出在哪就在那里用各种形式反复尝试,最后发现是缓冲区的问题,C primer plus永远的神!教会了我很多!
最后添加了getchar函数解决了!!!
太开心了,完全是自己调试出来的!!!
明天要用C++写一次!!!