懂C的进 作业问题

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:41:20
1. 顺序表的插入
在顺序表第i个元素之前插入一个新元素x,顺序表用一维数组s实现,*np用以存放表长度,C语言中的数组下标从0开始。本例为在顺序表{1,2,3,4,5,6,7,8}的第3个元素前插入元素“9”。
int insertsqlist(int i, int x, int s[], int *np)
{int j,n;
n=*np;
if ((i<1)||_____________) /*i值非法,返回值为0*/
return(0);
else
{ for (j=n; j>=i; j--)
________________________; /*向后移动数据,腾出要插入的空位*/
s[j]=x; /*将新元素插入到s[j]位置*/
*np=++n; /*表长加1*/
return(1); /*插入成功,返回值为1*/
}
}
# include<stdio.h>
main() /*主程序*/
{int a=3,c,d,e,k;
static int b[]={1,2,3,4,5,6,7,8};
d=8;
c=9;
e=insertsqlist(a,c,b,&d); /*调用插入函数*/
if(e==0)
printf("error");
else
{ for (k=0; k<d; k++)
printf("%3d",b[k]); /*输出结果*/
}
}
程序运行结果为:1,2,9,3,4,5,6,7,8。

if ((i<1)||__i>8___________) i表示的元素在线性表中插入的位置

{ for (j=n; j>=i; j--)
____a[j++]=a[j]___; 这个循环就是把第三个元素后的每个元素向后移一个位置,
这样就能有空位把9插到第三个元素前面了!!