当前位置:网站首页>C language makes it easy to add, delete, modify and check the linked list "suggested collection"
C language makes it easy to add, delete, modify and check the linked list "suggested collection"
2022-07-05 18:39:00 【Full stack programmer webmaster】
Hello everyone , I meet you again , I'm your friend, Quan Jun .
notes : Simple pursuit of code simplicity , So the writing may not be standard .
// Take it for the first time c Start writing data structures , Because of what I wrote , Pursue less code , And College ppt Not quite the same. . Please point out the mistakes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct node// Define the node
{
int data;
struct node * next;
}Node;
// Function introduction
void printlist(Node * head)// Print linked list
int lenlist(Node * head)// Return the length of the list
void insertlist(Node ** list,int data,int index)// Insert elements
void pushback(Node ** head,int data)// Tail insertion
void freelist(Node ** head)// Empty the list
void deletelist(Node ** list,int data)// Remove elements
Node * findnode(Node ** list,int data)// lookup
void change(Node ** list,int data,int temp)// Change the value
void printlist(Node * head)// Print linked list
{
for(;head!=NULL;head=head->next) printf("%d ",head->data);
printf("\n");// Print for other functions , Last line break
}
Chain length
int lenlist(Node * head)// Return the length of the list
{
int len;
Node * temp = head;
for(len=0; temp!=NULL; len++) temp=temp->next;
return len;
}
Insert elements
void insertlist(Node ** list,int data,int index)// Insert elements , use *list take head Pointers and next Unified expression
{
if(index<0 || index>lenlist(*list))return;// Judge illegal input
Node * newnode=(Node *)malloc(sizeof(Node));// establish
newnode->data=data;
newnode->next=NULL;
while(index--)list=&((*list)->next);// Insert
newnode->next=*list;
*list=newnode;
}
Add element to tail
void pushback(Node ** head,int data)// Tail insertion , ditto
{
Node * newnode=(Node *)malloc(sizeof(Node));// establish
newnode->data=data;
newnode->next=NULL;
while(*head!=NULL)head=&((*head)->next);// Insert
*head=newnode;
}
Empty the list
void freelist(Node ** head)// Empty the list
{
Node * temp=*head;
Node * ttemp;
*head=NULL;// The pointer is set to null
while(temp!=NULL)// Release
{
ttemp=temp;
temp=temp->next;
free(ttemp);
}
}
Delete
void deletelist(Node ** list,int data)// Delete the linked list node
{
Node * temp;// It's just convenient free
while((*list)->data!=data && (*list)->next!=NULL)list=&((*list)->next);
if((*list)->data==data){
temp=*list;
*list=(*list)->next;
free(temp);
}
}
lookup
Node * findnode(Node ** list,int data)// lookup , Return the pointer to the node , If no return is empty
{
while((*list)->data!=data && (*list)!=NULL) list=&((*list)->next);
return *list;
}
Change value
void change(Node ** list,int data,int temp)// change
{
while((*list)->data!=data && (*list)->next!=NULL)list=&((*list)->next);
if((*list)->data==data)(*list)->data=temp;
}
Final test
int main(void)// test
{
Node * head=NULL;
Node ** gg=&head;
int i;
for(i=0;i<10;i++)pushback(gg,i);
printf(" The list elements are in turn : ");
printlist(head);
printf(" The length is %d\n",lenlist(head));
freelist(gg);
printf(" The length after release is %d\n",lenlist(head));
for(i=0;i<10;i++)pushback(gg,i);
deletelist(gg,0);// head
deletelist(gg,9);// tail
deletelist(gg,5);
deletelist(gg,100);// non-existent
printf(" Create the list again , After deleting a node \n");
printlist(head);
freelist(gg);
for(i=0;i<5;i++)pushback(gg,i);
insertlist(gg,5,0);// head
insertlist(gg,5,5);
insertlist(gg,5,7);// tail
insertlist(gg,5,10);// non-existent
printlist(head);
printf(" find %d\n hold 3 Turn into 100",*findnode(gg,5));
change(gg,3,100);
change(gg,11111,1);// non-existent
printlist(head);
}
Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/149821.html Link to the original text :https://javaforall.cn
边栏推荐
- 爬虫01-爬虫基本原理讲解
- vulnhub之darkhole_2
- AI Open2022|基于异质信息网络的推荐系统综述:概念,方法,应用与资源
- @Extension, @spi annotation principle
- Is it safe to open an account, register and dig money? Is there any risk? Is it reliable?
- MYSQL中 find_in_set() 函数用法详解
- Is it safe for Apple mobile phone to speculate in stocks? Is it a fraud to get new debts?
- 进程间通信(IPC):共享内存
- Rse2020/ cloud detection: accurate cloud detection of high-resolution remote sensing images based on weak supervision and deep learning
- Thoroughly understand why network i/o is blocked?
猜你喜欢
MySQL优化六个点的总结
2022最新Android面试笔试,一个安卓程序员的面试心得
记录Pytorch中的eval()和no_grad()
如何写出好代码 - 防御式编程
The 10th global Cloud Computing Conference | Huayun data won the "special contribution award for the 10th anniversary of 2013-2022"
Case sharing | integrated construction of data operation and maintenance in the financial industry
Pytorch yolov5 training custom data
2022最新中高级Android面试题目,【原理+实战+视频+源码】
Memory leak of viewpager + recyclerview
爬虫01-爬虫基本原理讲解
随机推荐
Introduction to Resampling
7-2 keep the linked list in order
MySQL优化六个点的总结
Multithreading (I) processes and threads
Reading notes of Clickhouse principle analysis and Application Practice (5)
Linear table - abstract data type
node_ Exporter memory usage is not displayed
RPC protocol details
U-Net: Convolutional Networks for Biomedical Images Segmentation
[utiliser Electron pour développer le Bureau sur youkirin devrait]
How to write good code defensive programming
What is the reason why the video cannot be played normally after the easycvr access device turns on the audio?
pytorch yolov5 训练自定义数据
开户注册股票炒股安全吗?有没有风险的?靠谱吗?
rust统计文件中单词出现的次数
开户注册挖财安全吗?有没有风险的?靠谱吗?
SAP feature description
FCN: Fully Convolutional Networks for Semantic Segmentation
Exemple Quelle est la relation entre le taux d'échantillonnage, l'échantillon et la durée?
集合处理的利器