creat函数根据用户输入的多行字符串建立一个链表,当某行输入字符串是”##”,则结束创建链表;所得链表头指针作为函数返回值。在______处填写适当内容,完成该程序。
structexm{
charname[8];
structexm*next;
};
structexm*creat()
{
structexm*phead=0;
structexm*pnew,*pend;
inti=0;
pend=pnew=(structexm*)malloc(sizeof(structexm));
pnew->next=0;
scanf('%s',pnew->name);
while(strcmp(pnew->name,'##')!=0)
{
i++;
if(i==1)
{
pend=pnew;
phead=pnew;
}
else
{
pend->next=pnew;
pend=pnew;
}
pnew=(structexm*)malloc(sizeof(structexm));
scanf('%s',pnew->name);
pnew->next=NULL
}
free(_________);
returnphead;
};
structexm{
charname[8];
structexm*next;
};
structexm*creat()
{
structexm*phead=0;
structexm*pnew,*pend;
inti=0;
pend=pnew=(structexm*)malloc(sizeof(structexm));
pnew->next=0;
scanf('%s',pnew->name);
while(strcmp(pnew->name,'##')!=0)
{
i++;
if(i==1)
{
pend=pnew;
phead=pnew;
}
else
{
pend->next=pnew;
pend=pnew;
}
pnew=(structexm*)malloc(sizeof(structexm));
scanf('%s',pnew->name);
pnew->next=NULL
}
free(_________);
returnphead;
};
举一反三
- 分析下面的程序,下列说法中错误的是 ________ 。 #define NULL 0 #include "conio.h" struct stu { long num; char name[20]; int score; struct stu * next; }; int main() { struct stu *head,*p,*pa,*pb,*pc; pa=(struct stu *)malloc(sizeof(struct stu)); pb=(struct stu *)malloc(sizeof(struct stu)); pc=(struct stu *)malloc(sizeof(struct stu)); scanf("%ld%s%d",&pa->num,pa->name,&pa->score); scanf("%ld%s%d",&pb->num,pb->name,&pb->score); scanf("%ld%s%d",&pc->num,pc->name,&pc->score); head=pa; pa->next=pb; pb->next=pc; pc->next=NULL; p=head; while(p!=NULL) { printf("%ld,%s,%d\n",p->num,p->name,p->score); p=p->next; } }
- 若已建立以下链表结构,指针p、s分别指向如图所示结点。 则不能将s所指结点插入到链表末尾的语句组是______。 A: p=p->next; s ->next=p; p->next=s; B: s ->next='\0'; p=p->next; p->next=s; C: p=p->next; s ->next=p->next; p->next=s; D: p=(*p).next; (*s ).next=(*p).next; (*p).next=s;
- 在一个头结点为head的空循环链表中插入一个结点s,则指针s应执行操作( )。 A: head->next=s;s->next=NULL; B: s->next=head;head->next=NULL; C: head->next=s;s->next=head->next; D: s->next=head;head->next=s;
- 已知单链表上一结点的指针为p,则删除该结点后继的正确操作语句是:() A: s= p->next; p=p->next; free(s); B: p=p->next; free(p); C: s= p->next; p->next=s->next; free(s); D: p=p->next; free(p->next);
- 一个单向链表,head指向头结点,每个结点包含数据域data和指针域next。链表按数据域递增有序排列,完成以下函数,使删除链表中数据域值相同的结点。typedefintdatatype;typedefstructnode{datatypedata;structnode*next;}linklist;delete(linklist*head){linklist*p,*q;p=head->next;if(q==NULL)return;p=q->next;while(p!=NULL)if(p->data==q->data){________;free(p);P=q->next;}else{q=q;________}return(s);}