数据结构 单链表插入删除操作(c语言实现)

#include "stdlib.h"
#include "stdio.h"


typedef struct LNode{
	int data;
	struct LNode *next;

}LNode,*LinkList;

void Create_List(LinkList &L){
	int data;
	LinkList p,q;
	L=(LinkList)malloc(sizeof(LNode));
	L->next=NULL;

	q=L;
	scanf("%d",&data);
	while(data!=0){
		p=(LinkList)malloc(sizeof(LNode));
		p->data=data;
		p->next=q->next;
		q->next=p;
		q=p;
		scanf("%d",&data);
	}
	q=L;
}

void TranverseList(LinkList L){
	LinkList p;
	p=L->next;
	if(p==NULL){
		printf("null\n");
		return;
	}
	while(p!=NULL){
		printf("%d,",p->data);
		p=p->next;
	}
	printf("\n");
}
void ListDelet(LinkList &L,int delElem){
	LinkList p,temp;
	p=L;
	int tag=0;
	while(p->next!=NULL){
		if(p->next->data==delElem){
			temp=p;
			tag=1;
			break;
		}
		p=p->next;
	}
	if(tag==0){
		return ;
	}
	if(temp->next->next==NULL&&tag==1){
		temp->next=NULL;
	}else if(tag==1){
		temp->next=p->next->next;
	}
	
}
void Insert(LinkList &L,int elem){
	LinkList p;
	LinkList s;
	p=L;
	s=(LinkList)malloc(sizeof(LNode));
	s->data=elem;
	s->next=NULL;
	while(p->next!=NULL){
			if(p->next->data==elem) break;
			if(p->next->data>elem){
				s->next=p->next;
				p->next=s;
				break;
				}
		p=p->next;
	}
	if(p->next==NULL&&p->datanext=s;
	}
}
int main(){

	
	LinkList L;
	Create_List(L);
	printf("插入前:"); 
	TranverseList(L);
	Insert(L,4);
	Insert(L,1);
	Insert(L,10);
	Insert(L,3);
	printf("插入4,1,10,3后:"); 
	TranverseList(L);
	ListDelet(L,5);
	ListDelet(L,1);
	ListDelet(L,10);
	ListDelet(L,8);
	printf("删除5,1,10,8后:");
	TranverseList(L); 
	Insert(L,4);
	printf("插入4后:");
	TranverseList(L); 
	ListDelet(L,2);
	printf("删除2后:");
	TranverseList(L); 
return 0;
}

你可能感兴趣的:(数据结构&算法)