#include<stdio.h>
#include<stdlib.h>
typedef struct Node{
int data;
struct Node *next;
}node;
尾插法創(chuàng)建鏈表
node *creat1(int n)//尾插法創(chuàng)建鏈表
{
node *p,*head,*r;//r是指向之前節(jié)點(diǎn)的指針,p是當(dāng)前節(jié)點(diǎn)的指針杖们,head是頭指針
head=(node *)malloc(sizeof(node));
scanf("%d",&head->data);
r=head;
int i;
for(i=0;i<n-1;i++){
p=(node *)malloc(sizeof(node));
scanf("%d",&p->data);
r->next=p;
p->next=NULL;
r=p;
}
return head;
}
頭插法創(chuàng)建鏈表
node *creat0(int n)//頭插法創(chuàng)建鏈表
{
node *p,*head,*r;//r是指向之前節(jié)點(diǎn)的指針,p是當(dāng)前節(jié)點(diǎn)的指針肩狂,head是頭指針
p=(node *)malloc(sizeof(node));
scanf("%d",&p->data);
p->next=NULL;
r=p;
head=p;
int i;
for(i=0;i<n-1;i++){
p=(node *)malloc(sizeof(node));
scanf("%d",&p->data);
p->next=r;
head=p;
r=p;
}
return head;
}
打印鏈表
void node_printf(node *head)//打印鏈表
{
node *p=head;
while(p!=NULL){
printf("%d\n",p->data);
p=p->next;
}
}
刪除節(jié)點(diǎn)
node *node_delect(node *head,int data)//刪除節(jié)點(diǎn)
{
node *p=head,*pre;
while(p&&p->data!=data){
pre=p;
p=p->next;
}
if(p!=NULL)
pre->next=p->next;
return p;
}
void node_delect(node *head)//刪除節(jié)點(diǎn)版本2
{
node *p=head,*pre;
int t;
printf("刪除的ID=");
scanf("%d",&t);
while(p&&p->data!=t){
pre=p;
p=p->next;
}
if(p!=NULL)
pre->next=p->next;
if(p)
node_printf(head);
else
printf("NONE data\n");
}
按升序創(chuàng)建鏈表胀莹,Head是虛頭節(jié)點(diǎn)
void creat(node *Head)//按升序創(chuàng)建鏈表,Head是虛頭節(jié)點(diǎn)
{
node *p,*pTemp,*pre;
int t=1;
pTemp=(node *)malloc(sizeof(node));
cd_creat(pTemp);
pre=Head;
p=Head->next;
while(p!=NULL){
if(pTemp->id<p->id){
pre->next=pTemp;
pTemp->next=p;
t=0;
}
pre=p;
p=p->next;
}
if(t){
pre->next=pTemp;
pTemp->next=p;
}
}
檢索鏈表婚温,并返回節(jié)點(diǎn)指針
node *node_find(node *head,int data)//檢索鏈表,并返回節(jié)點(diǎn)指針
{
node *p=head;
while(p->data!=data){
p=p->next;
}
return p;
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者