单链表的基本操作
#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;
}
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步