用c语言编写线性函数 用c语言实现线性表的基本操作
c语言如何定义一个线性函数y=kx+b的系数k,b,从键盘读取这两个系数,并读取任意?
float k,b,x,y;
创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、服务器托管、云服务器、雅安服务器托管、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、雅安服务器托管、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。
printf("请输入k,b:");
scanf("%f%f",k,b);
printf("请输入x:");
scanf("%f",x);
y=k*x十b;
printf("y=%f\n",y);
C语言编写线性表相关的
#include stdio.h
#include malloc.h
#include stdlib.h#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
typedef int ElemType;
//typedef struct
//{
// Elemtype *list;
// int size;
// int maxsize;
//}SqList;typedef struct List
{
ElemType *list;
int size;
int maxsize;
}List,*SqlList;typedef struct sNode
{
ElemType data;
struct sNode *next;
}sNode,*LinkList;int InitList_Sq(List L)
{
L.list=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L.list)
exit(OVERFLOW);
L.size=0;
L.maxsize=LIST_INIT_SIZE;
return OK;
}int ListInsert_Sq(List L,int i,ElemType e)
{
ElemType *p,*q,*newbase;
if(i1||iL.size+1)
return ERROR;
if(L.size=L.maxsize)
{
newbase=(ElemType *)realloc(L.list,(L.maxsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase)
exit(OVERFLOW);
L.list=newbase;
L.maxsize+=LISTINCREMENT;
}
q=(L.list[i-1]);
for(p=(L.list[L.size-1]);p=q;--p)
*(p+1)=*p;
*q=e;
++L.size;
return OK;
}int ListDelete_Sq(List L,int a,int b) /*删除*/
{
ElemType *x,*y;
int j=0;
while(jL.size)//ji-1
{
if(L.list[j]=aL.list[j]=b)
{
x=(L.list[j]);//要删除的数
y=L.list+L.size-1;
for(++x;x=y;++x)
*(x-1)=*x;
--L.size;
}
else
++j;
}
/*if(!p||ji-1)
return ERROR;*/ /*int i;
ElemType *p;
if(i1||iL.size)
return ERROR;
p=(L.list[i-1]);
e=*p;
q=L.list+L.size-1;
for(++p;p=q;++p)
*(p-1)=*p;
--L.size;*/
return OK;
}
int ListDestory_Sq(List L)
{
free(L.list);
L.size=0;
return OK;
}int InitList_Link(LinkList L,int n)
{
int i;
LinkList p;
L=(LinkList)malloc(sizeof(sNode));
L-next=NULL;
/*for(i=n;i0;--i)
p=(LinkList)malloc(sizeof(sNode));
scanf("%d",p-data);
p-next=L-next;
L-next=p;*/
return OK;
}int ListInsert_Link(LinkList L,int i,ElemType e)
{
LinkList p=L,s;
int j=0;
while(pji-1)
{
p=p-next;
++j;
}
if(!p||ji-1)
return ERROR;
s=(LinkList)malloc(sizeof(sNode));
s-data=e;
s-next=p-next;
p-next=s;
return OK;
}
int ListDelete_Link(LinkList L,int i,ElemType e)
{
LinkList p=L,q;
int j=0;
while(p-nextji-1)
{
p=p-next;
++j;
}
if(!(p-next)||ji-1)
return ERROR;
q=p-next;
p-next=q-next;
e=q-data;
free(q);
return OK;
}
int ListDestory_Link(LinkList L)
{
LinkList p,r=L;
p=L-next;//L为头结点
while(p)
{
r-next=p-next;
free(p);
p=r-next;
}
return OK;
}int CountEqualx(LinkList L,int x)
{
int sum=0;
LinkList p;
p=L-next;//L为头结点
while(p)
{
if(p-data==x)
sum++;
p=p-next;
}
return sum;
}int SelectMax(LinkList L)
{
int max;
LinkList p=L-next;
if(p)
{
//p=L-next;//L为头结点
max=p-data;
while(p)
{
if(p-datamax)
max=p-data;
p=p-next;
}
return max;
}
else
{
printf("\n链表为空!\n");
exit(1);
}
}int main()
{
int i,j,a,b,x;
List L;
LinkList Link,p;
ElemType e; //顺序表操作
InitList_Sq(L);
for(i=0;i10;i++)
ListInsert_Sq(L,1,i);//在第1个位置插入i
printf("\n顺序表删除前: ");
for(i=0;iL.size;i++)
printf("%d ",L.list[i]);
printf("\n输入a的值:\na=");
scanf("%d",a);
printf("\n输入b的值:\nb=");
scanf("%d",b);
ListDelete_Sq(L,a,b); //删除大于等于a 小于等于b的数
printf("\n顺序表删除后: ");
for(i=0;iL.size;i++)
printf("%d ",L.list[i]);
printf("\n"); //链表操作
InitList_Link(Link,10);
for(i=0;i10;i++)
ListInsert_Link(Link,1,i);//在第1个位置插入i
printf("\n链表最大元素为:%d\n",SelectMax(Link));
printf("\n输入x:");
scanf("%d",x);
printf("\n链表中元素等于x的值有%d个\n",CountEqualx(Link,x));
printf("\n链表删除前: ");
p=Link-next;//L为头结点
while(p)
{
printf("%d ",p-data);
p=p-next;
} printf("\n删除第几个元素:");
scanf("%d",x); ListDelete_Link(Link,x,e);
printf("\n链表删除后: ");
p=Link-next;//L为头结点
while(p)
{
printf("%d ",p-data);
p=p-next;
}
printf("\n链表删除的元素为: %d\n",e);
ListDestory_Sq(L);
ListDestory_Link(Link);
system("pause");
return 0;
}
在vc++6.0下使用c语言编写创建线性表函数,错误很多,具体如下。 求高手指导!
#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); //
}
如何用C语言写一个函数输出线性表中指定范围的数字
#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语言程序写一个函数,求线性代数方程组AX=b,要有通用性。非常感谢帮忙。
高斯-赛德尔迭代法
#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();
}
网站标题:用c语言编写线性函数 用c语言实现线性表的基本操作
标题网址:http://scyanting.com/article/hgpohs.html