c语结构链条例子
Ⅰ 啥叫链条c语言
链条没听说过,链表但是知道。
其实是一种数据结构,常用的结构还有栈(汇编必学),队列,和树(这种结构对于提高效率相当有用。)
如果是初学就不要想这些了,老实地把基础打好,可以地话,认真越好你的数学,,真正的计算机大牛还是强在算法,结构,思想,设计上。而且越学你会发现自己知道的越少。C语言是一种极端,然而lisp是另一种极端,我现在才开始接触函数式编程这东东,才知道思想无止境啊。
Ⅱ C 语言的结构体要怎么写 结构体里面有那些东西 谢谢 举实例 谢谢大家了
struct
自定义结构体名
{
};(记
加
号)
用自定义结构体名
定义
结构体
所需
变量
比
student结构体类型
#include
<stdio.h>
struct
student
{
int
num;
char
*sex;
};
void
main()
{
student
x;
x.num=2008;
x.sex="男";
printf("%d\n",x.num);
printf("%s\n",x.sex);
}
student
自定义结构体名字,x
用自定义结构体
定义
变量名字
种
名结构体
自定义结构体名字
掉
能
定义
种结构体
候用
比
面
struct
{
int
num;
char
*sex;
}x;//
定义
x
结构体变量
类型
名
具体
类型
括号
面
东西
由于
名
所
能
使用第二
Ⅲ C语言问题,就什麽叫结构体引用最好举点例子.
结构体引用,没有这个“专业用词”,但是从你的问题上来看,可以理解你的想法。
引用就是引用的意思,结构体是一种扩展的数据结构。
结构体一般可以根据实际需要设定内部的构造,比如存放商品信息的结构体
struct obj{
char name[20];//名字
int number;//编码
float price;//价钱
};
如上,就定义了一个结构体,但是这东西本身并无实际意义,它只是规定了一种格式。
商店的货品有许多样,比如100种商品。
struct obj commodity[100];这样,就定义了100个实际的空间。用来保存100种商品的信息
而比如我想获取或修改第八个商品的信息就用如下方法。
struct obj temp = commodity[7];//获取了第八个商品的结构体空间
temp.name="xx牌面包";//设定商品名称
temp.number=12345;//设定商品编码
temp.price=3.5f;//设定商品价钱
如上的定义结构体数组,从结构体数组中获取某一具体元素并对内容属性修改的一系列过程
就叫结构体引用拉。
Ⅳ C语言结构体链表排序,给出例子
晕了,程序上来的不完整 ,出错部分
struct gz *fread1(void)
{
FILE *sj;
struct gz *Head=NULL,*New,*Tail;
if ((sj=fopen("sj.txt","r+"))==NULL)
{
printf("文件不存在或不能打开文件,请按下任意键返回!\n");
getch();
return NULL;
}
for(;!feof(sj);)
{
if((New=(struct gz *)malloc(sizeof(struct gz)))==NULL)
{
while(Head!=NULL)
{
struct gz *p;
p=Head;
Head=Head->Next;
free(p);
}
fclose(sj);
printf("创建链表失败,请按下任意键返回!\n");
getch();
return NULL; /*申请结点空间失败*/
}
if(Head==NULL)
{
if (fread(New,sizeof(struct gz),1,sj)==1)
{
New->Next=NULL;
Head=New;
Tail=New;
}
else
{
printf("读入数据失败,请按下任意键返回!\n");
free(New);
fclose(sj);
getch();
return NULL; //读入数据失败
}
}
else
{
if (fread(New,sizeof(struct gz),1,sj)==1)
{
New->Next=NULL;
Tail->Next=New;
Tail=New;
}
else
{
while(Head!=NULL)
{
struct gz *p;
p=Head;
Head=Head->Next;
free(p);
}
printf("读入数据失败,请按下任意键返回!\n");
fclose(sj);
getch();
return NULL; //读入数据失败
}
}
}
fclose(sj);
return Head;
}
void print(struct gz *Head)
{
struct gz *p;
p=Head;
if( p!=NULL )
{
do
{
printf("编号%d\t姓名%s\t数据%.2f\n",p->bh,p->xingm,p->bb);
p=p->Next;
}while( p!=NULL );
}
}
Ⅳ C语言数据结构链式结构的一个问题
给你画了个图,感觉要比语言更好理解,简单了画了下,凑乎看吧,这种问题画个图会好理解些...
Ⅵ 自学完C后,就学数据结构(C语言版的)里面的一个链表的例子里面有的个status的用法有点疑惑,望高手解答~~
1 Status可能是一个typedef的类型,它只是代表插入成功与失败,完全可以用bool类型代替,这个对功能无影响;
2 LinkList &L表示L的一个引用,引用作为形参,参数就不是“值传递”了,如在函数中改变形参的值,则被引用的变量值也相应改变。c语言中支持引用;
3 void main()或许可以编译通过,但是不规范不安全,int main()没问题。
Ⅶ C语言中p=p->next;语句是什么意思一般作用是什么
p=p->next是表示修改指针p的位置,把p指向原来的下一个节点。
作用是:
p1-p2-p3-....... p1->next=p1,那么链表就断了,p2,p3会找不到了,链表变成了 p1--| |-----|。->[0000]->[1111]->[2222]->[3333]->........ | p 开始时p指向节点[0000],那么p->next指向的是节点[1111] 如果执行语句 p->next=p,实际上就是修改了指针p->next的位置,p没有变。
链表变成了: ......->[0000]->| |_____| p ,其它节点还在,但是不能遍历了,因为p->next 还是它自己本身,所以其它节点就找不到了,如果执行p=p->next,这样是修改了p位置,链表变成如下: ......->[0000]->[1111]->[2222]->[3333]->........ | p。
(7)c语结构链条例子扩展阅读
C语言特点
1、C语言是一种结构化的语言,提供的控制语句具有结构化特征。
2、c语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。
3、C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。
Ⅷ C语言简单例子
1 c语言是面向过程的语言,可以理解为一个函数调用另一个函数的语言,其中程序的入口是main函数
2 示例
#include<stdio.h> //包含要用到的函数的头文件,如printf
intmax(inta,intb);//函数声明
intmain(){//程序入口函数
inta=12,b=9;
intm=max(a,b);//函数调用
printf("max=%d ",m);
getchar();
return0;
}
intmax(inta,intb){//函数定义
returna>b?a:b;
}
3 运行结果
Ⅸ 谁能提供一个C语言结构体实现链表的例子,代码能直接运行的
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
typedef struct Node
{
int key;
Node * next;
}Node; //定义结构
int main()
{
int *a,n,i;
Node* L0,*p;
scanf("%d",&n);//输入链表长度
a=(int*)malloc(sizeof(int)*n);//给数组a动态分配n个空间
L0=(Node*)malloc(sizeof(Node));
L0->next=NULL; //建立头结点
srand((unsigned)time( NULL ) ); //与rand()函数一起使用
for(i=0;i<n;i++)
{
a[i]=rand()%100; //产生100以内的随机数,也可以自己输入
}
for(i=0;i<n;i++)
{
p=(Node*)malloc(sizeof(Node));
p->key=a[i]; //分配一个结点空间,并赋值
p->next=L0->next;
L0->next=p; //连接单链表,这里是精髓
}
while(L0->next)
{
L0=L0->next;
printf("%d ",L0->key); //遍历单链表
}
return 0;
}
还是自己把链表弄懂吧,很有意思的,也是数据结构的基础内容。
Ⅹ 求一个C语言结构体编程例子。
排序你可以用最简单的冒泡或者选择排序,以平均分为标准
#include<stdio.h>
typedefstructstudent
{
intnum;
charname[20];
intScore1;
intScore2;
intScore3;
floataverage;
}student;
studentst[3];
voidCreateStudent(studentst[])
{
inti,j;
floatAverage;
for(i=0;i<3;i++)
{
printf("请输入学生%d的资料: ",i+1);
printf("学号为:");
scanf("%d",&st[i].num);
printf("姓名是:");
scanf("%s",&st[i].name);
printf("第1门成绩是:");
scanf("%d",&st[i].Score1);
printf("第2门成绩是:");
scanf("%d",&st[i].Score2);
printf("第3门成绩是:");
scanf("%d",&st[i].Score3);
printf(" ");
st[i].average=(st[i].Score1+st[i].Score2+st[i].Score3)/3;
}
}
voidSortStudent(studentst[],intnLength)
{
inti,j,max;
studenttemp;
for(i=0;i<nLength;i++)
{
max=i;
for(j=i+1;j<nLength;j++)
{
if(st[j].average>st[max].average)
max=j;
}
if(max!=i)
{
temp=st[i];
st[i]=st[max];
st[max]=temp;
}
}
}
intmain()
{
intj;
CreateStudent(st);
SortStudent(st,3);
printf("学号 姓名 语文 数学 英语 平均分 ");
for(j=0;j<3;j++)
{
printf("%d",st[j].num);
printf(" %s",st[j].name);
printf(" %d",st[j].Score1);
printf(" %d",st[j].Score2);
printf(" %d",st[j].Score3);
printf(" %2f",st[j].average);
printf(" =*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=* ");
}
}