线性表的输入输出查找删除插入(链式,头插入)

#include
#include
#define error -1
typedef struct LNode{
	int data;
	struct LNode *next;
}LNode,*LinkList;
LNode *create_LinkList(void)
{
	int data;
	LNode *head,*p,*q;
	head=(LNode *)malloc(sizeof(LNode));
	head->next=NULL;
	while(1)
	{
		scanf("%d",&data);
		if(data==0)
			break;
		p=(LNode *)malloc(sizeof(LNode));
		p->data=data;
		p->next=head->next;
		head->next=p;
	}
	return(head);
}
void PrintLinkList(LNode *head)
{
	LNode *p;
	p=head->next;
	if(p!=NULL)
		do
		{
			printf("%d",p->data);
			p=p->next;
		}
		while(p!=NULL);
}
int Get_Elem(LNode *L,int i)
{
	int j;
	LNode *p;
	p=L->next;
	j=1;
	while(p!=NULL&&jnext;
		j++;
	}
	if(j!=i)
		return(error);
	else return(p->data);
}
void Insert_LNode(LNode *L,int i,int e)
{
	int j=0;
	LNode *p,*q;
	p=L->next;
	while(p!=NULL&&jnext;
		j++;
	}
	if(j!=i-1)
		printf("no");
		else {
		q=(LNode *)malloc(sizeof(LNode));
		q->data=e;
		q->next=p->next;
		p->next=q;
	}
}
void Delete_LinkList(LNode *L,int i)
{
	int j=1;
	LNode *p,*q;
	p=L;
	q=L->next;
	while(p->next!=NULL&&jnext;
	    j++;
	}
	if(j!=i)
		printf("no");
	else
	{p->next=q->next;
	free(q);
	}
}
void main()
{
	LNode *pt;
	int t,a,b;
	pt=create_LinkList();
	PrintLinkList(pt);
	scanf("%d",&t);
	b=Get_Elem(pt,t);
	printf("%d",b);
	scanf("%d,%d",&t,&a);
	Insert_LNode(pt,t,a);
    PrintLinkList(pt);
	scanf("%d",&t);
	Delete_LinkList(pt,t);
    PrintLinkList(pt);
}

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