|
鏈表的結(jié)構(gòu):數(shù)據(jù)域與指針域。
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.在鏈表上插入一個(gè)結(jié)點(diǎn)。
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.在鏈表中刪除一個(gè)結(jié)點(diǎn)。
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);
}
|
|