若有以下定义: struct node { int data; struct node *next; } struct node *head,*p; 已建立如下图所示的链表: p ↓ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ head →│data│next┼→│data│next┼→... →│data│NULL│ └──┴──┘ └──┴──┘ └──┴──┘ 能删除指针p所指向结点的程序段是( )。
若有以下定义: struct node { int data; struct node *next; } *p,*q,*t; 指针p、t和q分别指向图中所示结点: p t q ↓ ↓ ↓ ┌──┬──┐ ┌──┬──┐ ┌──┬──┐ │data│next┼→│data│next┼→│data│next┼→... └──┴──┘ └──┴──┘ └──┴──┘ 现要将t和q所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是( )
若按如下定义,函数link的功能是( )。其中head指向链表首结点,整个链表结构如下图: ┌──┬─┐ ┌──┬─┐ ┌──┬──┐ head →│data│ ┼→│data│ ┼→…→│data│NULL│ └──┴─┘ └──┴─┘ └──┴──┘ struct node {int data; struct node *next; }; void link(struct node* head) {struct node *p=head; while(p!=NULL) { if(p->data%2==1) printf("%d ",p->data); p=p->next; } }