回 帖 发 新 帖 刷新版面

主题:各位帮帮忙,我的程序为什么可以运行但却不显示结果。。

要求建立一个单链表,其数据类型为
            typedef struct{
         char     *id;
         char     *name;
         int              age;
        }ELEMTYPE; 
    该链表能输入两个元素并显示输出结果。
#include <stdio.h>
 typedef struct{
    char     *id;
    char    *name;
    int     age;
        }ELEMTYPE;
 typedef ELEMTYPE *PELEMTYPE;                  /*单链表数据类型*/
 struct Node;                       /*单链表节点类型*/
 typedef struct Node *PNode;        /*单链表节点结构*/
 struct Node{
    ELEMTYPE     *info;
    PNode         link;
        };
 typedef struct Node *LinkList;      /*单链表类型*/
 /*创建带头节点的空链表&申请一个节点空间*/
 LinkList creatNullList_link(void){
    LinkList llist=(LinkList)malloc(sizeof(struct Node));                     /*申请表头节点空间*/
    if(llist)    llist->link=NULL;
    else          printf("Out of flow!\n");/*创建失败*/
    return(llist);
}
 /*为ELEMTYPE类型的变量申请空间*/
 PELEMTYPE creatELEM_elem(void){
    PELEMTYPE element=(PELEMTYPE)malloc(sizeof(ELEMTYPE));
    if(element)         return(element);
    else                printf("Out of flow!\n");
    return(NULL);
}
 /*释放链表空间*/
 void  deleteList_link(LinkList llist){
    PNode p,q;
    p=llist;
    while(p){
        q=p->link;
        free(p);
        p=q;
    }
}
void main(){
   int i;
   LinkList llist;
   PNode p,q;
   llist=creatNullList_link(); /*创建带头节点的空链表*/
   p=llist->link;
   for(i=0;i<2;i++){
    p=creatNullList_link();/*申请一个节点空间*/
    p->info=creatELEM_elem();/*为ELEMTYPE类型的变量申请空间*/
    printf("Enter xxx's information(id,  name,  age):\n");
    fflush(stdin);
    printf("id:\n");
    gets(p->info->id);
    printf("name:\n");
    gets(p->info->name);
    printf("age:\n");
    scanf("%d",&p->info->age);
    p=p->link;
    }
   printf("ID             NAME            AGE\n");
   printf("----------------------------------\n");
   q=llist->link;
   while(q){
    printf("\n%-12s%-15s-%-5d\n",q->info->id,q->info->name,q->info->age);
    q=q->link;
            }
   deleteList_link(llist);  /*释放链表空间*/


  }

回复列表 (共3个回复)

沙发

你对typedef 和 struct的理解很模糊。仔细看一下那部分的应用有问题。不可能跑起来的。

板凳

llist=creatNullList_link(); /*创建带头节点的空链表*/
   p=llist->link;
   for(i=0;i<2;i++){
    p=creatNullList_link();/*申请一个节点空间*/
    p->info=creatELEM_elem();/*为ELEMTYPE类型的变量申请空间*/
    printf("Enter xxx's information(id,  name,  age):\n");
    fflush(stdin);
    printf("id:\n");
    gets(p->info->id);
    printf("name:\n");
    gets(p->info->name);
    printf("age:\n");
    scanf("%d",&p->info->age);
    p=p->link;
    }
这里面开头和结尾处的语句有错误,你在好好的思考一下链表赋值的概念

3 楼

恩,两位大虾的指点都很到位,改过后可以正确运行了。。。
orz..........

我来回复

您尚未登录,请登录后再回复。点此登录或注册