高斯-赛德尔迭代法
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名与空间、网站空间、营销软件、网站建设、思明网站维护、网站推广。
#include stdio.h
#include conio.h
#include alloc.h
#include math.h
#define N 100
float *GauseSeidel(float *a,int n)
{
int i,j,nu=0;
float *x,dx;
x=(float *)malloc(n*sizeof(float));
for(i=0;i =n-1;i++)
x[i]=0.0;
do
{
for(i=0;i =n-1;i++)
{
float d=0.0;
for(j=0;j =n-1;j++)
d+=*(a+i*(n+1)+j)*x[j];
dx=(*(a+i*(n+1)+n)-d)/(*(a+i*(n+1)+i));
x[i]+=dx;
}
if(nu =N)
{
printf( "迭代发散\n ");
exit(1);
}
nu++;
}
while(fabs(dx) 1e-6);
return x;
}
main()
{
int i;
float *x;
float c[12]={5,2,1,8,2,8,-3,21,1,-3,-6,1};
float *GauseSeidel(float *,int);
x=GauseSeidel(c,3);
clrscr();
for(i=0;i =2;i++)
printf( "x[%d]=%f\n ",i,x[i]);
getch();
}
float k,b,x,y;
printf("请输入k,b:");
scanf("%f%f",k,b);
printf("请输入x:");
scanf("%f",x);
y=k*x十b;
printf("y=%f\n",y);
#include stdio.h
int main(void)
{
int data[] = {2,5,15,30,1,40,17,50,9,21,32,8,41,22,49,31,33,18,50,5} ;
int newdata[30];
int i,j=0;
for(i = 0;i sizeof(data);i++)
{
if(data[i]=10data[i]=30)
{
continue;
}
else
{
newdata[j] = data[i];
j++;
}
}
for (i = 0;i j; i++)
{
printf("%d",newdata[i]);
}
getchar();
return 0;
}
这个代码里面的 data[]后面赋值你就输入你的线性表 的数,代码会自己查找并删除。
data[i]=10data[i]=30
这句话就是范围意思是 大于10小于30的数,删除后的数组会存在newdata数组里面
请采纳!
这是数据结构中标准的线性表插入程序,但是它不是真正的c语言,而是类c哦。
status Insertlist(Sqlist L,int i,Elemtype e){
Elemtype *p; //在这里定义了一个*p的指针,目的是找到链表中每个结点的首地址就可以了,不用找一个结点的所用地址啊
int j;
if(L.length==L.listsize) //L.listsize是代表的表的上限值,是事先设定好的
printf("内存分配空间已不够,请重新分配:\n");
p=L.elem;//这条语句应该写在下一条语句的后面,也就是分配后的地址给到临时指针变量p中
L.elem=(Elemtype *)realloc(p,(LISTSIZE+L.listsize)*sizeof(Elemtype));
//这条语句是想一下子分配足够大的线性表空间,realloc在C中不认可的,实现时还要用malloc,这里只是设计实现的,而分配成功后L.elem只是得到分配单元的首地址,不成功则是空值。
if(!p){
printf("分配空间失败");
exit(0);
}
L.elem=p;//这条语句应该没用吧
L.length++;//这条语句应该放在成功插入的后面,也就是return 1;语句之前才对
L.listsize=L.listsize+LISTSIZE_INCE;
if(i1||iL.length){ //这里用到的是运算符||,代表是“或”,也就是说i1代表输入时误操作造成,而iL.length代表输入的位置超出表中数据的个数,位置找不到。
printf("插入位置输入不正确,请重新操作:\n");
return 0;//代表插入失败
}
else{
for(j=L.length-1;j=i;j--)//从i到最后表尾顺次下移,腾出i的位置
L.elem[j+1]=L.elem[j];
L.elem[i]=e;//将数据插入到i的位置中
return 1;//代表插入成功
}
return 1;
}
#include stdio.h
#include stdlib.h // malloc
#define Max 100
typedef struct
{
int data[Max];
int len;
}Sqlist;
int cSqlist(Sqlist **L,int a[],int n)
{
int i=0;
*L=(Sqlist *)malloc(sizeof(Sqlist));
for(i=0;in;i++)
{
(*L)-data[i]=a[i];
}
(*L)-len=n;
return 1;
}
void display(Sqlist L)
{
int i;
for(i=0;L.leni;i++)
{
printf("%d - ",L.data[i]);
}
}
void main()
{
Sqlist *L; // Sqlist L; 这一句已经申请了空间,所以改成指针,在 cSqlist()里面申请空间
int a[5]={1,2,3,4,5};
int n=5;
cSqlist(L,a,n);//传入L的地址才能改变L的值
display(*L); //
}
typedef int datatype;
#define maxsize 1024
typedef struct
{ ElemType data[MaxSize];
int length;
}SqList;
void InitList(SqList L)
{ L.length=0;
}
int GetLength(SqList L)
{return L.length;
}
int GetElem(SqList L,int i,ElemType e)
{ if (i1||iL.length)
return 0;
else
{ e=L.data[i-1];
return 1;
}
}
int Locate(SqList L,ElemType x)
{int i=0;
while (L.data[i]!=x)
i++;
if (iL.length)
return (0);
else
return(i+1);
}
int InsElem(SqList L,ElemType x,int i)
{ int j;
if(i1||iL.length+1)
return 0;
for(j=L.length;ji;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=x;
L.length++;
return 1;
}
int DelElem(SqList L,int i)
{ int j;
if(i1||iL.length)
return 0;
for(j=i;jL.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return 1;
}void DispList(SqList L)
{ int i;
for(i=1;i=L.length;i++)
printf("%c",L.data[i-1]);
printf("\n");
}
void main()
{ int i;
ElemType e;
SqList L;
InitList(L);
InsElem(L,'a',1);
InsElem(L,'c',2);
InsElem(L,'a',3);
InsElem(L,'e',4);
InsElem(L,'d',5);
InsElem(L,'b',6);
printf("xian xing biao:");DispList(L);
printf("chang du:%d\n",GetLength(L));
i=3;GetElem(L,i,e);
printf("di %d ge yuan su :%c\n",i,e);
e='a';
printf("yuan su %c shi di %d ge yuan su\n",e,Locate(L,e));
i=4;printf("shan chu di %d ge yuan su\n",i);
DelElem(L,i);
printf("xian xing biao:");DispList(L);
}