下列算法將單鏈表中值重復(fù)的結(jié)點(diǎn)刪除,使所得的結(jié)果表中各結(jié)點(diǎn)值均不相同,試完成該算法。
	void DelSameNode(LinkList L)
	//L是帶頭結(jié)點(diǎn)的單鏈表,刪除其中的值重復(fù)的結(jié)點(diǎn)//
	{ListNode * p,*q,*r;
	p=L->next; //p初始指向開始結(jié)點(diǎn)//
	while(p){ //處理當(dāng)前結(jié)點(diǎn)p//
	q=p;
	r=q->next;
	do { //刪除與結(jié)點(diǎn)*p的值相同的結(jié)點(diǎn)//
	while(r&&r->data!=p->data){
	q=r;
	r=r->next;
	}
	if(r){ //結(jié)點(diǎn)*r的值與*p的值相同,刪除*r//
	q->next=r->next;
	free(r);
	r=();
	}
	}while( r );
	p=p->next;
	}
	}
 
                            	設(shè)線性鏈表的存儲(chǔ)結(jié)構(gòu)如下:
	struct node
	{ELEMTP data; /*數(shù)據(jù)域*/
	struct node *next; /*指針域*/
	}
	試完成下列在鏈表中值為x的結(jié)點(diǎn)前插入一個(gè)值為y的新結(jié)點(diǎn)。如果x值不存在,則把新結(jié)點(diǎn)插在表尾的算法。
	void inserty(struct node *head,ELEMTP x,ELEMTP y)
	{s=(struct node *)malloc(sizeof(struct node));
	();
	if(){s->nexr=head;head=s;}
	else {
	q=head;p=q->next;
	while(p->dqta!=x&&p->next!=NULL){q=p;()}
	if(p->data= = x){q->next=s;s->next=p;}
	else{p->next=s;s->next=NULL;}
	}
	}
