生活随笔
收集整理的這篇文章主要介紹了
【c语言】链表(完整版)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
c語言之鏈表(完整版)
全國新增確診連續(xù)兩天為
0
喜迎遍地飄零的時(shí)刻
海外游子也在回家
一起加油!
鏈表(完整版)
此版包括以下功能:
鏈表創(chuàng)建、
頭插、
尾插、
刪除、
翻轉(zhuǎn)、
刪除相同元素、
遍歷、
判斷鏈表是否為空
以下為源碼
若有不嚴(yán)謹(jǐn)?shù)牡胤?#xff0c;歡迎指正
#include
<stdio.h>
#include
<stdlib.h>
typedef struct Node
{int data
;struct Node
*next
;
}Node
;
int main(){Node
*head
= (Node
*)malloc(sizeof(Node
));head
-> next
= NULL
;createLink(head
,10);travelLink(head
);insertForward(head
,100);insertBack(head
,200);travelLink(head
);deleteSame(head
);travelLink(head
);reverseLink(head
);travelLink(head
);deleteLink(head
);isEmpty(head
);return 0;
}
void createLink(Node
*head
,int size
){Node
*rear
= head
;int i
;for(i
= 0;i
< size
;++i
){Node
*newnode
= (Node
*)malloc(sizeof(Node
));newnode
-> next
= NULL
;scanf("%d",&newnode
->data
);rear
-> next
= newnode
;rear
= newnode
;}
}
void travelLink(Node
*head
){Node
*p
= head
-> next
;while(p
!= NULL
){printf("%d\t",p
->data
);p
= p
-> next
;}putchar('\n');
}
void insertForward(Node
*head
,int data
){Node
*newnode
= (Node
*)malloc(sizeof(Node
));newnode
-> next
= NULL
;newnode
-> data
= data
;newnode
-> next
= head
-> next
;head
-> next
= newnode
;
}
void insertBack(Node
*head
,int data
){Node
*newnode
= (Node
*)malloc(sizeof(Node
));newnode
-> next
= NULL
;newnode
-> data
= data
;Node
*p
= head
;while(p
->next
!= NULL
){p
= p
-> next
;}p
-> next
= newnode
;p
= newnode
;
}
void deleteSame(Node
*head
){Node
*curr
= head
-> next
;while(curr
!= NULL
){Node
*pre
= curr
;Node
*p
= curr
-> next
;while(p
!= NULL
){if(curr
->data
== p
->data
){pre
-> next
= p
-> next
;free(p
);p
= pre
-> next
;}else{pre
= pre
-> next
;p
= p
-> next
;}}curr
= curr
-> next
;}
}
void reverseLink(Node
*head
){Node
*curr
;Node
*pre
= NULL
;while(head
-> next
!= NULL
){curr
= head
-> next
;head
-> next
= curr
-> next
;curr
-> next
= pre
;pre
= curr
;}head
-> next
= pre
;
}
void deleteLink(Node
*head
){Node
*curr
;while(head
-> next
!= NULL
){curr
= head
-> next
;head
-> next
= curr
-> next
;free(curr
);}
}
void isEmpty(Node
*head
){if(head
-> next
== NULL
){printf("鏈表為空!\n");}else{printf("鏈表不為空!\n");}
}
運(yùn)行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的【c语言】链表(完整版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。