执行以下程序后,如果输入2 王明 80,则输出结果第一行为,第二行为,第三行为。#includestruct student{int num;char name[20];int score;}stu1;int main(){struct student *p;p=&stu1;scanf("%d%s%d",&p->num,p->name,&p->score);printf("%d\n%s\n%d\n",stu1.num,stu1.name,stu1.score);return 0;}
查看答案
补充以下程序,使得程序实现对结构体数组进行数据输入及输出。#includestruct student{int num;char name[20];int score;};int main(){struct student stu[5],*p;p=;int i;for(i=0;i<5;i++){scanf("%d%s%d",&p->num,,);p++;}p=stu;for(i=0;i<5;i++){printf("%d %s %d\n",,p->name,);p++;}return 0;}
补充以下函数,使得函数实现单向链表动态建立的功能。结点结构体定义:struct node//结点结构体{int num;struct node *next;};struct node * createL(struct node * head)//单向链表建立{struct node *pEnd,*pNew;pNew= (struct node *)malloc(sizeof());//动态生成一个结点head=pNew;//头指针指向第一个节点pEnd=pNew; //当前链表尾结点指针也指向第一个结点scanf("%d ",&pNew->num);//输入结点数据while( pNew->num!=0)//结点数据不为0,继续增加新结点{pNew->next=NULL;//设置新节点的指针为空pEnd->next=;//当前链表的尾结点指针指向新结点;pEnd=pNew;//pEnd指向当前新节点pNew= (struct node *)malloc(sizeof(struct node)); //继续申请新结点内存空间scanf("%d",&pNew->num); //输入结点数据}free();//释放没有用到的结点空间return head;}
补充以下函数,使得函数实现对单向链表的输出功能。struct node //链表结点结构体{int num;struct node *next;};void printL(struct node *head)//单向链表的输出{struct node *pTemp;pTemp=;//让pTemp指针指向链表的首结点while(pTemp!=NULL)//pTemp没有指向空,即链表没有遍历完{printf("%d->",pTemp->);//输出链表中当前结点的数据pTemp=;//pTemp指向下一个结点}printf("\n");}
补充以下函数,使得函数是实现单向链表的插入操作功能。struct node//链表结构体{int num;struct node *next;};struct node * insertL(struct node * head)//单项链表的插入{struct node *p,*q,*pNew;pNew= (struct node *)malloc(sizeof(struct node)); //为要插入的结点申请空间printf("\n输入要插入的新结点数据num:\n");scanf("%d",&pNew->num); //输入结点数据pNew->next=;if(pNew->numnum) //新结点数据比头结点数据小,则插入到头结点前{pNew->next=;=pNew;}else//新结点插入到链表中间或尾部{p=head;while(p!=NULL && p->numnum)//遍历链表,找到新结点要插入的位置{q=p;//用q记录前驱结点=p->next; //用p记录遍历到的当前结点}if(q!=NULL){=p; //把新结点连接到p结点之前q->next=;//把新结点连接到q结点之后}else{p->next=; //把新结点连接到尾结点后}}return head;}