如何仅显示列表中的前 10 个输入?

Posted

技术标签:

【中文标题】如何仅显示列表中的前 10 个输入?【英文标题】:How can I display only the first 10 inputs from the list? 【发布时间】:2021-08-14 10:28:57 【问题描述】:

我在一个结构列表中插入一些细节,每个四元组代表一个数据包,包括源、目标、生成时间和一个卷号? 这是我的显示函数,在 main() 中我只调用她:display();在主代码的末尾。如何仅显示列表中的前 10 个数据包(四个),这些数据包是我之前使用下面的插入函数插入的?

struct Packet
 int rollnumber;
 int src;
 int dest;
 double gentime;
 struct Packet *next;
 * head;    

void display()
 struct Packet * temp = head;
 while(temp!=NULL)
    printf("Roll Number: %d\n",temp->rollnumber);
    printf("src: %d\n", temp->src);
    printf("dest: %d\n", temp->dest);
    printf("gentime: %0.1f\n\n", temp->gentime);
    temp = temp->next;
    
 

 void insert(int rollnumber, int src, int dest, double gentime)
  struct Packet * packet = (struct Packet *) malloc(sizeof(struct Packet));
  packet->rollnumber = rollnumber;
  packet->src=src;
  packet->dest=dest;
  packet->gentime = gentime;
  packet->next = NULL;

  if(head==NULL)
    head = packet;
  
  else
    packet->next = head;
    head = packet;
   
  

【问题讨论】:

还有什么问题?仅显示 10 个数据包。 【参考方案1】:

编写函数display例如如下方式

void display( size_t n )

    if ( n == 0 ) n = ( size_t )-1;

    for ( struct Packet * temp = head; n-- && temp != NULL; temp = temp->next )
      
        printf("Roll Number: %d\n",temp->rollnumber);
        printf("src: %d\n", temp->src);
        printf("dest: %d\n", temp->dest);
        printf("gentime: %0.1f\n\n", temp->gentime);
    

并调用函数,例如

display( 10 );

当使用等于0 的参数调用函数时,函数会输出整个列表。

【讨论】:

我可以用插入功能做同样的事情吗? @wajaap 你可以做任何你想做的事情。:) 我试过了,它什么都没有显示,这让我觉得它与插入功能不一样。 @wajaap 您可以提出一个新问题,您的新问题关闭此问题并选择最佳答案。

以上是关于如何仅显示列表中的前 10 个输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何仅读取目录中的前 5 个文件夹:Spark

如何使用 CSS 仅显示字符串的前 10 个字符?

仅显示选择 SQL 中的前 5 个字符?

我想为列表中的前 3 个项目显示不同的图像

如何跳过jq输入中的前n个对象

使用自定义适配器仅在recyclerview中的列表中显示前两项