正文
c语言链式结构定义函数 c语言链表结构体定义
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
c语言所谓链表结点和递归函数可以自己定义自己是什么意思?
结点定义 一般是用结构体(struct)来定义c语言链式结构定义函数,它可以在结构体中引用自己的结构体c语言链式结构定义函数,也就是嵌套。
如:
struct Node
{
int value;
struct Node *next;
};
这就是典型的单链表结点定义。 结构体中又定义c语言链式结构定义函数了一个结构体指针。
递归函数也是一样c语言链式结构定义函数,嵌套递归调 用。
如:
int fun(int t)
{
if(t1)
return 1;
return fun(t-1) * 2;
}
道理一样。
C语言链表 主函数
1、添加头文件"stdio.h"
2、struct student * creat(void),但是你的main函数中返回接收却是用的int*类型。
3、主函数main应当明确声明为void main()
4、最为严重的是:struct student * creat(void) 函数体中使用了局部变量struct student *head; struct student *p1,*p2; 但是函数结束的地方却要返回这些指针,因此返回的值是无效数据。返回时,已经不再作用域了,是无效的空间。建议把这些数据当作输入参数,指针类型的。就可以正确的接收分配的struct student空间以及指针了。
5、struct student * creat(void) 函数体中,临时指针*p1、*p2再函数返回之前应当设置为NULL,避免因为局部变量的作用域结束导致相关的空间被清除。
总之,我建议把struct student * creat(void)定义修改为:
void creat(struct student **head).
以上内容经过调试,可以使用。
==================我的程序,经过完整的调试
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
#define NULL 0
#define LEN sizeof(struct student)
struct student
{
long num;
float score;
struct student *next;
};
int n;
void creat(struct student **head) /*定义函数,此函数带回一个指向链表头的指针*/
{
struct student *p1,*p2;
n=0;
do
{
p1=(struct student *)malloc(LEN); /*开辟一个新单元*/
p1-next=NULL;
scanf("%ld,%f",p1-num,p1-score);
if(p1-num==0)
break;
n++;
if(n==1)
*head=p1;
else
p2-next=p1;
p2=p1;
} while(p1-num!=0) ;
p1=NULL;
p2=NULL;
}
void main()
{
struct student *p;
creat(p);
if(p!=NULL)
do
{
printf("%ld %5.1f\n",p-num,p-score);
p=p-next;
}while(p!=NULL);
flushall(); //清除键盘缓冲区,避免输入混淆
getchar(); //等待键盘任意输入,以便观察运算结果
}
看我的回答怎么样?
用C语言实现定义线性表的链式存储结构
#includestdio.h
#includemalloc.h
typedef struct{
int *elem;
int length;
int listsize;}sqlist;
int init_List(sqlist L){
L.elem=(int*)malloc(100*sizeof(int));
if(!L.elem) return 0;
else
L.length=0;
L.listsize=100;return 1;}
void main(){
sqlist l;
int *p;int a;int e;int b;
int i;
if(!init_List(l)) printf("内存分配失败");
else
p=l.elem;
printf("输入线性表的长度l.length的值:\n");
scanf("%d",l.length);
printf("输入%d个数:\n",l.length);
for(i=0;il.length;i++)
scanf("%d",p++);
printf("创建的线性表为:\n");
for(i=0;il.length;i++)
printf("%d\n",l.elem[i]);}
c语言链式结构定义函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言链表结构体定义、c语言链式结构定义函数的信息别忘了在本站进行查找喔。