#include<iostream>
#include<malloc.h>
using namespace std;
typedef int elemtype;
typedef struct node
{
elemtype data;
struct node *next;
}nodetype;
nodetype *create()
{
cout<<"創建一個單鏈表:"<<endl;
nodetype *head,*p,*s;
p=(nodetype *)malloc(sizeof(nodetype));
head=p;
s=p;
elemtype n;
while(cin>>n && n!=0)
{
p=(nodetype *)malloc(sizeof(nodetype));
p->data=n;
s->next=p;
s=s->next;
}
s->next=NULL;
return head;
}
void dis(nodetype *head)
{
nodetype *p;
p=head->next;
if(p==NULL)
{
cout<<"空表"<<endl;
return;
}
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
int len(nodetype *head)
{
nodetype *p=head->next;
if(p==NULL)
return 0;
int j=1;
while(p!=NULL)
{
p=p->next;
j++;
}
return j;
}
nodetype *ins(nodetype *head,int i,elemtype x)
{
if(i<0|| i>len(head))
{
cout<<"I不合格"<<endl;
return NULL;
}
nodetype *p,*s,*t;
p=(nodetype *)malloc(sizeof(nodetype));
p->data=x;
t=head->next;
s=head;
int j=1;
while(j<=i)
{
t=s;
s=s->next;
j++;
}
p->next=s;
t->next=p;
return head;
}
nodetype *del(nodetype *head,int i)
{
if(i<1 || i>len(head))
{
cout<<"i不合格"<<endl;
return NULL;
}
int j=1;
nodetype *p,*s;
p=head->next;
s=head;
while(j<i)
{
s=p;
p=p->next;
}
s->next=p->next;
return head;
}