下面是用c语言编写的对不带头结点的单链表进行就地逆置的算法,该算法用L返回逆置后的链表的头指针,试在空缺处填入适当的语句。 void reverse(linklist &L){ p=NULL;q=L; while(q!=null) { (1) ; q->next=p; p=q; (2) ___ ; } ( 3) _____; }
举一反三
- 假设以带头结点的单链表表示线性表,阅读下列算法fun,并回答问题: (1)设线性表为( a1, a2,a3, a4, a5, a6, a7 ),写出执行算法fun后的线性表; (2)简述算法fun的功能。 void fun(LinkList L) {//L为带头结点单链表的头指针 ListNode *p,*q; p =L; while (p&&p->next) { q= p->next; p->next=q->next; p=q->next; free(q); } }
- 对以下代码的功能描述最准确的是()LinkList *Demo(LinkList *L)// L是无头结点的单链表{LinkList *q,*p;if(L!=NULL&&L->;next!=NULL){q=L;L=L->;next;p=L;while (p->;next)p=p->;next;p->;next=q; q->;next=NULL;}return (L);} A: 逆置线性表 B: 当表不空时,删除线性表的首个元素 C: 插入一个新的元素在表尾 D: 当表不空时,把原表的表首元素取下,并插入到表尾。
- 一个单向链表,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);}
- 若q是某带头结点的单链表的头结点指针,p是第一个结点的指针,则单链表不为空时的判定条件是( )。 A: p != NULL B: q != NULL C: p!= NULL || q != NULL D: p != NULL && q != NULL
- 若q是某带头结点的单链表的头结点指针,p是第一个结点的指针,则单链表不为空时的判定条件是()。 A: p!=NULL B: q!=NULL C: p!=NULL||q!=NULL D: p!=NULL&&q!=NULL