数据结构-线性表-其他运算

//单链表的其他运算
//建立
//方法一通过已实现的插入算法来实现O(n^2)

LinkList CreatLinklist1()
{
	LinkList head;
	int x,i;
	head=InitiateLinklist();
	i=1;
	scanf("%d",&x);
	while(x!=0)
	{
		InsertLinklist(head,x,i);
		i++;
		scanf("%d",&x);
	}
	return head;
}
//方法2:改进:用一个指针指向尾节点,O(n)
LinkList CreatLinklist2 ()
{
	LinkList head;
	Node *q,*t;
	int x;
	head=malloc(sizeof(Node));
	q=head;
	scanf("%d",&x);
	while (x!=0)
	{
		t=malloc(sizeof(Node));
		t->data=x;
		q->next=t;
		q=t;
		scanf("%d",&x);
	}
	q->next=NULL;
	return head;
}
//方法三:前插
LinkList CreatLinklist3()
{
	LinkList head;
	Node *p;
	int x;
	head=malloc(sizeof(Node));
	head->next=NULL;
	scanf("%d",&x);
	while(x)
	{
		p=malloc(sizeof(Node));
		p->data=x;
		p->next=head->next;
		head->next=p;
		scanf("%d",&x);
	}
	return head;
}

//删重复结点,q指向检查点,r指向删除节点,p指向比较点
void PurgeLinklist (LinkList head)
{
	Node *p,*q,*r;
	q=head->next;
	while(q!=NULL)
	{
		p=q;
		while(p->next!=NULL)
			if(p->next->data==q->data)
			{
				r=p->next;
				p->next=r->next;
				free(r);
			}
			else
				p=p->next;
		q=q->next;
	}
}


 

你可能感兴趣的:(C数据结构)