笔试题

来源:互联网 发布:网络在线棋牌 编辑:程序博客网 时间:2024/06/05 10:44

.试设计实现删除单链表中值相同的多余结点的算法

解:该例可以这样考虑,先取开始结点的值,将它与其后的所有结点值一一比较,发现相同的就删除掉,然后再取第二结点的值,重复上述过程直到最后一个结点。设单链表(其类型为LinkList)的头指针head指向头结点,则可按下列步骤执行:首先,用一个指针p指向单链表中第一个表结点,然后用另一个指针q查找链表中其余结点元素,由于是单链表,故结束条件为p= =NULL,同时让指针s指向q所指结点的前趋结点,当查找到结点具有q->data= =p->data时删除q所指的结点,然后再修改q,直到q为空;然后使p指针后移(即p=p->next),重复进行,直到p为空时为止。算法描述如下:del(LinkList *head){  //删除单链表中值相同的多余结点   LinkList *p, *s, *q;   p=head->next;while(p!=NULL && p->next!=NULL){  s=p;   //s指向要删除结点的前趋q=p->next;         while (q!=NULL){   if (q->data= =p->data)}  //查找值相同的结点并删除                  {  s->next=q->next;                     free(q);                     q=s->next;                   }                else                   {   s=q;                      q=q->next;                  }            }p=p->next;}}

typedef int (*funcptr)(); 什么意思

typedef int (*funcptr)();  // funcptr is synonym for "pointer                           //    to function returning int"funcptr table[10];   // Equivalent to "int (*table[10])();"

0 0
原创粉丝点击