69,368
社区成员
发帖
与我相关
我的任务
分享
结构体一
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LN, *LinkedList;
结构体二
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode, *LinkedList;
//初始化单链表
LinkedList LinkedListInit()
{
LinkedList L;
L = (LinkedList) malloc (sizeof (LNode));
L->next = NULL;
return L;
}
struct f
{
int n
};
int n;
printf("您要输入几个数据:n=");
scanf("%d",&n);
LinkedList head = null;
LinkedList q = null;
LinkedList p = null;
p = head;
for (i=0; i<n; i++){
q = (LinkedList )malloc(sizeof(LN));
if (q==null){
printf("分配空间失败!");
exit -1;
}
else{
q->next = null;
p->next = q;
p = q;
}
}
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LNode, *LinkedList;
因为LNode重复了,是否会出现异常情况呢?
然后是最后一个,我也曾想到是malloc,可是不知道怎么写。。。。。可是像上面一样,都是LNode是什么个意思呢?
您没回答耶。。您说的“是的”是什么呢?
然后问题三:LinkedList L;(L是指针类型吧,是不是上面定义结构体的时候这样*LinkedList,然后就可以直接这样定义,如果针对结构体一来说,如果定义一个链域是不是要LN *L才行呢?)
我的意思是针对这个结构体
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LN, *LinkedList;
LN *L是否等价于LinkedList L呢?
#include<stdio.h>
//只有C99标准支持
typedef struct
{
int n;
}f;
int main()
{
int m;
register int i;
printf("m=");
scanf("%d",&m);
f fl[m];
for(i=0;i<m;i++)
{
rewind(stdin);
scanf("%d",&f1[i].n);
}
return(0);
}
支持C99的编译器在下只知道一款gcc。而C89不支持可变数组,如果要在运行时确定数组长度的话通常用动态分配的方式:
#include<stdio.h>
/*C89也支持*/
typedef struct
{
int n;
}f;
int main()
{
int m;
f *f1;
register int i;
printf("m=");
scanf("%d",&m);
f1=(f*)malloc(m*sizeof(f));
for(i=0;i<m;i++)
{
rewind(stdin);
scanf("%d",&f1[i].n);
}
free(f1);
return(0);
}
typedef int a;
typedef a a;
a b=10;
cout<<b<<endl;
LNode *l = new LNode[n];
// ......................
delete []l;
typedef struct LNode{...}LN, *LinkedList;
可以拆分成:
typedef struct LNode{...}LN;//=>typedef struct LNode LN;类型LN相当于struct LNode型。
typedef struct LNode{...}*LinkedList;//=>typedef struct LNode* LinkedList; 类型LinkedList相当于LNode*型。
typedef struct LNode{...}LNode;是类型名和struct重名。