在链表中添加多个记录

时间:2012-12-08 08:06:44

标签: c

我基本上有两个查询。首先这个代码工作正常我只想打印结果,第二个程序只输入一个记录。我想保存一份完整的通讯录,如姓名联系人。为此我必须为每个字段提供单独的结构指针?请帮帮我。

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

struct node
{
   int data;
   struct node *link;
} *head=NULL;

void inserfirst();

int main()
{
    insertfirst();
    getch();
    return 0;
}

void insertfirst()
{
     int item;
     struct node *ptr;
     scanf("%d",&item);
     if (head==NULL) {
         head=(struct node*)malloc(sizeof(struct node));
         head->data=item;
         head->link=NULL;
     } else {
         ptr=head;
         head=(struct node*)malloc(sizeof(struct node));
         head->data=item;
         head->link=ptr;
     }
}

2 个答案:

答案 0 :(得分:0)

解决您的问题:

一般来说,保留多个信息位(名称,数字,地址等)的方法是将它们包含在节点结构中,如:

struct node
{
   int data;
   char name[50];
   char phone[20];
   struct node *link;
} *head=NULL;

这是一个联系人列表,每个节点都有联系人详细信息,该列表包含多个联系人。

要打印这样的列表,可以遍历列表并打印每个节点,具体来说:

  1. 从头开始
  2. 如果当前节点为null,那么我们就在最后,退出
  3. 打印当前节点的内容
  4. 将当前节点设置为下一个节点(即current-&gt; link)
  5. 返回第2步

答案 1 :(得分:0)

您也可以使用

   typedef struct contact
    {
     int data;
    char name[40];
    char add[90];
    }book;
    stuct node
    {
    book b;
    struct node*link;
    }*head=NULL;