链表的结构:数据域与指针域。
struct node
{int data;struct node * next;};
typedef struct node NODE;
1.建立链表:头插法和尾插法。
尾插法:
NODE *CreateH(int n)
{NODE *head,*p*q;
int i;p=(NODE *)(new NODE);
head=p;q=p;p->next=NULL;
for(i=1;i<=n;i++)
{p=(NODE *)(new NODE);p->data=0;q->next=p;
q=p;q->next=NULL;}return(head);
}
头插法:
NODE *CreateE(int n)
{NODE *head,*p
int i;p=(NODE *)(new NODE);
head=p;head->next=NULL;
for(i=1;i<=n;i++)
{p=(NODE *)(new NODE);
p->data=0;if(i=1) p->next=NULL;
else p->next=head->next;
head->next=p;
}return(head);
}
2.在链表上插入一个结点。
int Insert(NODE *head,int x,int i)
{NODE *q,*p;int j=0;q=head;
while((q!=NULL)&&(j<i-1))
{q=q->next;j++;}
if(q==NULL)return(0);
p=(NODE *)(new NODE);
p->data=x;p->next=q->next;q->next=p;
return(1)
}
3.在链表中删除一个结点。
int Delete(NODE *head,int i)
{NODE *p,*q;int j=0;q=head;
while((q!=NULL)&&(j<i-1))
{q=q->next;j++;}
if(q==NULL)return(0);
p=q->next;q->next=p->next;delete p;
return(1);
}
|