一个单向链表,head指向头结点,每个结点包含数据域data和指针域next。完成以下函数,求出所有结点数据域的和值并作为函数值返回。structlink{intdata;structlink*next;};structlink*head;sum(________){structlink*p;ints=0;p=head->next;while(p){s+=________;p=________;}return(s);}
举一反三
- 一个单向链表,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);}
- 在带有头结点的单链表Head中,要向表头插入一个由指针p指向的结点,则执行()。 A: p->next=Head->next;Head->next=p; B: p->next=Head;Head=p; C: p->next=Head;p=Head; D: Head=p;p->next=Head;
- 在一个头指针为head的带头结点的单向循环链表中,p指向尾结点,要使该链表成为不带头结点的单向链表,可执行()。 A: head=head→next;p=NULL B: head=head→next;p→next=head C: head→next=p→next D: head=head→next;p→next=NULL
- 在一个带头结点的单链表中,若 head 所指结点是头结点,若要删除第一个实际元素结点,则执行()。 A: p=head->next;head->next=p->next;free(p); B: p=head;free(p);head=head->next; C: head=head->next;p=head;free(p); D: p=head;head=head->next;free(p);
- 已知head是指向带头结点单链表的首指针,则删除线性表第一个实际结点(首结点)的操作是() A: p=head,head=p->next;free(p); B: p=head->next;free(p);head=head->next; C: p=head->next,head->next=p->next;free(p); D: free(head->next);head=head->next;