【问题标题】:Linked Lists in C without malloc functions没有 malloc 函数的 C 中的链表
【发布时间】:2013-06-04 14:45:12
【问题描述】:

如何在不使用 malloc 的情况下使用这个程序?如果我使用temp.next=&newtemp,程序可以正常工作吗?我必须学习如何避免 malloc。

    for(int ;;){
    printf("Fusni N(numrin e qyteteve): "); scanf("%d", &N);
    if(N<13 || N>100) {printf("Futet N gabim\t( 13 < N < 100)\n\n");continue;}
M=1;
while(1){
p = q = malloc(sizeof(struct node));

    p->id_qyteti = 1;

    for (i = 2; i <= N; ++i) {
        p->pas = malloc(sizeof(struct node));
        p = p->pas;
        p->id_qyteti = i;
    }

    p->pas = q;
 printf("M=%d, Zonat ku nderpritet rryma:\n", M);

for (count = N; count > 1; --count) {
 printf("%d ",p->pas->id_qyteti);   p->pas = p->pas->pas;
if(count==2)printf("\n\n");
      for (i = 0; i < M - 1; ++i) p = p->pas;
}
if(p->id_qyteti==13)

 {
printf("13.Tirana ngelet e fundit\n");
   printf("M-ja minimale: %d\n", M);
   break;

 }
else M++;

}}
return 0;
}

【问题讨论】:

  • 如果不返回块作用域自动变量的地址,要么是UB,要么你的程序实际上是有效的。但我真的不知道,这段代码真是一大堆不可读的乱七八糟的东西。
  • 如何重新组织代码?

标签: c data-structures linked-list malloc


【解决方案1】:

您可以将它与数组一起使用,但问题是您的容量有限。 例如,您可以有一个struct yourstruct[500]; 和一个整数来显示下一个空闲结构的位置,而不是 mallocing 您将执行类似mynode-&gt;next = &amp;yourstruct[i++] 的操作,当然您必须更好地控制才能知道空闲结构的位置。

【讨论】:

  • 如何将它与数组一起使用?
  • 首先我必须这样做:node* new = (node*)malloc(sizeof(node));但是程序说我有一个错误,未声明的新函数。
猜你喜欢
  • 2011-04-20
  • 1970-01-01
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
  • 2011-10-03
  • 2011-05-05
相关资源
最近更新 更多