请各位C\C++高手帮帮忙啊!!!!!!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/04 16:52:55
下面是我写的程序:
#include<iostream.h>
#include<stdlib.h>
struct seqlist{
char data[10];
int len;
};
int getlen_list(seqlist L){return L.len;}
void insert_list(seqlist L,char ch,int i)
{int n;
if(i==0&&L.len==0){L.data[0]=ch;L.len++;}
else if(i>=1&&i<=L.len)
{ for(n=L.len;n>i;n--)L.data[n]=L.data[n-1];
L.data[i]=ch;
L.len++;cout<<L.len<<endl;
}
else cout<<"error!!!!!!!!"<<endl;
}
void del_list(seqlist L,int i)
{int n;
for(n=i-1;n<L.len;n++)L.data[n]=L.data[n+1];
L.len--;
}
void print_list(seqlist L)
{int i;
for(i=0;i<L.len;i++)cout<<L.data[i]<<"\t";
}
#include<iostream.h>
#include"example1.h"
void main()
{int length;
struct seqlist L={'0',0};print_list(L);
insert_list(L,'a',0);
length=getlen_list(L);
print_lis

void insert_list(seqlist L,char ch,int i)
void del_list(seqlist L,int i) 这两个函数里面L传递的都是seqlist本身,是没有办法修改的,全部改成引用就可以了,或者传递指针也可以。


void insert_list(seqlist L,char ch,int i)
改成
void insert_list(seqlist &L,char ch,int i)

楼主想得到的输出结果是不是
a 1
press any key to continue!
其实这是全局变量和局部变量的问题,楼主在主函数中调用了 insert_list函数,但是在insert_list函数中修改过后的结构体L只适用于insert_list函数众,insert_list函数结束,L的值就自动变回主函数中的值,建议将void insert_list(seqlist L,char ch,int i){`````````} 改为:
seqlist insert_list(seqlist L,char ch,int i){``````````return L;}
同时主函数部分改为
void main()
{int length;
struct seqlist L={'0',0};print_list(L);
insert_list(L,'a',0);
length=getlen_list(insert_list(L,'a',0));
print_list(insert_list(L,'a',0));
cout<<length<<endl;
}
这样就OK了!!!!