在C中打印所有List元素

时间:2011-08-20 11:24:04

标签: c

我在c中为List构建这个接口,我插入到struct数组的列表指针, 现在我想打印结构的所有字段,我该怎么做?

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

typedef struct element {
    void *item;
    struct element *next;
} Element;

typedef Element* position;
typedef Element* List;

typedef struct strc   
{
    int row,col,value;
} Strc;

List initList()  
{
    Element *ls=malloc(sizeof(Element));
    if(ls)
        ls->next=NULL;
    else
        ls=NULL;
    return ls;
}

position insertToList(position p, void *item)  
{
    position newp=malloc(sizeof(Element));
    if(newp)
    {
        newp->next=p->next;
        p->next=newp;
        newp->item=item;
        //p=p->next;
    }
    else newp=NULL;
    return newp;
}

void *retriveFromList(position p)  {    return p->item;    }

position Next(position p)  {    return (position)p->next;    }

int isEmpty(List ls)  {    return ls->next==NULL;    }  

void freeList(List ls)  
{
    position pos=ls->next;
    while(ls->next!=NULL)
    {
        pos=ls->next;
        ls->next=pos->next;
        free(pos);
    }
}
void puts(List *ls)
{
    Position p=*ls;
    Strc *tmp;
    int i;
    for(i=0;i<10;i++)
    {
        tmp=(Strc *)malloc(sizeof(strc));
        tmp->row=i;
        tmp->col=i+1;
        tmp->value=i+2;
        p=insertToList(p,tmp);
    }
}
void print_list(List ls)  
{
    position p=ls->next;
    while(p!=NULL)
    {
        printf("%3d\n",*((int*) retriveFromList(p)));
        p=Next(p);          
    }
}

void main()
{
    List ls=initList();
    puts(&ls);
    print(ls);
}

1 个答案:

答案 0 :(得分:1)

所以,我的C不是盛大的

但是,似乎有很多小错字将会让你吃掉它们。 puts()中已定义stdio.h的最大问题之一。

首先,这个东西不能为我编译,所以解决所有编译器错误让我相当远。您的puts函数也缺少结束括号。我将其重命名为putv()并将其更改为以下内容。

void putv(List *ls)
{
  position p=*ls;
  Strc *tmp;
  int i;
  for(i=0;i<10;i++)
    {
      if(tmp=(Strc *)malloc(sizeof(Strc)))
        { 
          tmp->row=i;
          tmp->col=i+1;
          tmp->value=i+2;
          p=insertToList(p,tmp);
        }
    }
}

第二个问题是您的主要功能不是调用print_list(),而是调用普通print()

void main()
{
  List ls=initList();
  putv(&ls);
  print_list(ls);
}

这并不能解决您的所有问题

主要是因为我不认为它打印你想要什么,但我会留下一点让你弄明白。