链表
什么是链表
大佬讲解
静态链表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Tnode
{
int data;
struct Tnode* next;
};
void test()
{
struct Tnode node1 = { 10,NULL };
struct Tnode node2 = { 20,NULL };
node1.next = &node2;
struct Tnode* p = &node1;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
}
int main()
{
test();
system("pause");
return 0;
}
动态链表
初始化链表
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
struct Tnode
{
int data;
struct Tnode* next;
};
struct Tnode* print()
{
struct Tnode* hear = malloc(sizeof(struct Tnode));
hear->data =- 1;
hear->next = NULL;
struct Tnode* pear = hear;
int val = -1;
while (true)
{
printf("输入插入的数据:\n");
scanf_s("%d", &val);
if (val == -1)
{
break;
}
struct Tnode* newnode = malloc(sizeof(struct Tnode));
newnode->data = val;
newnode->next = NULL;
pear->next = newnode;
pear = newnode;
}
}
插入操作
void insert_list(struct Tnode* hear, int oldval, int newval);
{
if (hear == NULL)
{
return 0;
}
struct Tnode* prev = hear;
struct Tnode* pcurrent = prev->next;
while (pcurrent != NULL)
{
if (pcurrent != NULL)
{
break;
}
prev = pcurrent;
pcurrent = pcurrent->next;
if (pcurrent == NULL)
{
return;
}
strcut Tnode* newnode = malloc(sizeof(struct Tnode));
newnode->data = newval;
newnode->next = NULL;
newnode->next = pcurrent;
prev->next = newnode;
}
}
删除操作
}
void remove_list(struct Tnode* hear, int devalue);
{
if (NULL == hear)
{
return;
}
struct Tnode* prev = hear;
struct Tnode* pcrrent = hear->next;
while (pcurrent != NULL)
{
if (pcurrent->data == devalue)
{
break;
}
prev = pcurrent;
pcurrent = pcurrent->next;
if (NULL == pcurrent)
{
return;
}
prev->next = pcurrent->next;
free(pcurrent);
pcurrent = NULL;
}
}
遍历
void rearch();
{
if (hear == NULL)
{
return 0;
}
struct Tnode* p = hear->next;
while (p != NULL)
{
printf("%d ", p->data);
p = p->next;
}
}
销毁
void destory_list(struct Tnode* hear);
{
if (NULL == hear)
{
return;
}
struct Tnode* pcurrent = NULL;
while (pcurrent != NULL)
{
struct Tnode* pnext = pcurrent->next;
free(pcurrent);
pcurrent = next;
}
}
清空
void clear_list(struct Tnode* hear);
{
if (NULL = hear)
{
return;
}
struct Tnode* pcurrent = hear->next;
while (pcurent != NULL)
{
struct Tnode* pnext = pcurrent->next;
printf("%d节点被销毁\n", pcurrent- > data);
free(pcurrent);
pcurrent = pnext;
}
}