单链表的基本操作
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkedList {
int data;
struct LinkedList *next;
} LinkedList;
LinkedList * link_list_create_from_head(int * data,int length)
{
LinkedList *head = (LinkedList *)malloc(sizeof(LinkedList));
if(head == NULL)
{
printf("申请空间失败");
return NULL;
}
head->next = NULL;
for(int i = 0;i < length;i++)
{
LinkedList *node = (LinkedList *)malloc(sizeof(LinkedList));
node->data = data[i];
node->next = head->next;
head->next = node;
}
return head;
}
LinkedList * link_list_create_from_tail(int *data,int length)
{
LinkedList *head = (LinkedList *)malloc(sizeof(LinkedList));
if(head == NULL){
printf("申请空间失败");
return NULL;
}
head->next = NULL;
LinkedList *p = head;
for(int i=0;i<length;i++){
LinkedList *node = (LinkedList *)malloc(sizeof(LinkedList));
node->data = data[i];
node->next = NULL;
p->next = node;
p = node;
}
return head;
}
void print_linkedlist(LinkedList * head)
{
if(head == NULL)
{
printf("单链表为空");
}
LinkedList *p = head->next;
while(p)
{
printf("%d ",p->data);
p = p->next;
}
}
LinkedList * link_list_insert(LinkedList *head,int pos,int x){
LinkedList *p = head;
for(int i=1;i<pos;i++){
p = p->next;
}
LinkedList *node = (LinkedList *)malloc(sizeof(LinkedList));
node->data = x;
node->next = p->next;
p->next = node;
return head;
}
LinkedList * link_list_delete(LinkedList *head,int x){
LinkedList *p = head->next;
LinkedList *pre = head;
while(p){
if(p->data == x){
break;
}
pre = p;
p = p->next;
}
pre->next = p->next;
free(p);
return head;
}
LinkedList * link_list_update(LinkedList *head,int x,int k){
LinkedList *p = head->next;
while(p){
if(p->data == x){
p->data = k;
}
p = p->next;
}
return head;
}
int main(int argc,char *argv[])
{
int data[6] = {1,2,3,4,5,6};
LinkedList *head = link_list_create_from_head(data,6);
print_linkedlist(head);
printf("\n");
LinkedList *tail = link_list_create_from_tail(data,6);
print_linkedlist(tail);
printf("\n");
LinkedList *L1 = link_list_delete(tail,6);
print_linkedlist(L1);
printf("\n");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!