1

基本的に2つのクエリがあります。最初に、このコードは正常に動作しており、結果を出力したいだけで、次にこのプログラムは 1 つのレコードしか入力しません。名前の連絡先のようなレコードの完全なアドレス帳を保存したい。そのためには、すべてのフィールドに個別の構造体ポインターを与える必要がありますか? 私を助けてください。

#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;
     }
}
4

2 に答える 2

0

これも使えます

   typedef 構造体の連絡先
    {
     int データ;
    文字名[40];
    char add[90];
    }本;
    スタクト ​​ノード
    {
    ブックb;
    構造体ノード*リンク;
    }*head=NULL;
于 2012-12-09T06:16:11.363 に答える
0

問題に対処するには:

一般に、複数ビットの情報 (名前、番号、アドレスなど) を保持する方法は、次のようなノード構造体にそれらを含めることです。

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

これは連絡先のリストです。各ノードには連絡先の詳細があり、リストには複数の連絡先が含まれています。

このようなリストを出力するには、リストを反復処理して各ノードを出力します。具体的には次のとおりです。

  1. 頭から始める
  2. 現在のノードが null の場合は、最後なので終了します
  3. 現在のノードのコンテンツの出力
  4. 現在のノードを次のノードに設定します (つまり、現在->リンク)
  5. ステップ2に戻る
于 2012-12-08T08:23:46.157 に答える