C语言,帮忙看看这段代码,,,连接老出问题~!~!

来源:百度知道 编辑:UC知道 时间:2024/06/15 17:15:16
#include <stdio.h>

#define MaxSize 20

typedef struct
{
int data[MaxSize];
int last;
}sqlist;

void insert_sqlist(sqlist L,int x,int i);
void delete_sqlist(sqlist L,int i);
int locate_sqlist(sqlist L,int x);
int length_sqlist(sqlist L);
int get_sqlist(sqlist L,int i);

void insert_sqlist(sqlist L,int x,int i)
/*将X插入到顺序表L的第i-1个位置*/
{
int j;

if(L.last==MaxSize) error("表满"); //溢出
if((i<1)||(i>L.last+1)) error("非法位置");
for(j=L.last;j>i;j--)
L.data[j]=L.data[j-1]; //依次后移
L.data[i-1]=x; //置入X
L.last=L.last+1; //修改表长
}

void delete_sqlist(sqlist L,int i)
/*删除顺序表L中第i个位置上的结点*/
{
int j;

if((i<1)||(i>L.last)) error("非法位置");

for(j=i+1;j<=L.last;j++)
L.data[j-2]=L.data[j-1]; //依次前

你这个程序在进行函数调用的是传入的参数应该是一个 指向 线性表的指针...
而像你这样传入参数的话,根本就改变了 你的线性表里的值和操作...
你可以把 C中关于函数的参数传递看看..就知道了,举个例子:
#include "stdio.h"
void max(int x,int y);
void pmax(int *x,int *y);

int max(int x,int y)
{
int tem;
if(x<y)
{
tem=x;
x=y;
y=tem;
}
return ;
}
int pmax(int *x,*y)
{
int tem;
if(*x<*y)
{
tem=*x;
*x=*y;
*y=tem;
}
}

main()
{
int a=3,b=5;
max(3,5);
printf("%d %d\n",a,b);
pmax(&a,&b);
printf("%d %d\n",a,b);
}

输出结果是:
3 5
5 3

所以这样用根本改变不了你需要改变的线性表的值