首先要定义一个链表的单个节点
这里用到def struct 定义一个结构体
程序如图:
typedef struct student{
int score; //链表中要存储的值
struct student *next;//创建一个指针用来存储下一个node的地址
}LinkList;
创建链表:
一个链表中的头节点,他是不存储数值的,只存储下一个节点地址,我们调用链表,一般都是调用链表头节点的地址。
LinkList *creat(int n){
LinkList *head, *node, *end;//定义头节点,普通节点,尾部节点;
head = (LinkList*)malloc(sizeof(LinkList));//分配地址
end = head; //若是空链表则头尾节点一样
for (int i = 0; i < n; i++) {
node = (LinkList*)malloc(sizeof(LinkList));
scanf("%d", &node->score);
head->next = node;
end = node;
}
end->next = NULL;//结束创建
return head;
}
删除链表:
void delet(LinkList *list,int n){
LinkList *t = list;
LinkList *tmp = NULL;
int i = 0;
while(i<n&&t!=NULL){
tmp = t;
t= t->next;
i++;
}
if(t!=NULL){
tmp->next = t->next;
free(t);
}
else{
printf("this node is NULL");
}
}
改变链表值:
void change(LinkList *list,int n){
LinkList *t = list;
int i = 0;
while(t!=NULL&&i<n){
t = t->next;
i++;
}
if(t!=NULL){
printf("please input value you want by change\n");
scanf("%d",&t->score);
}
else{
printf("节点不存在\n");
}
}
插入链表:
void change(LinkList *list,int n){
LinkList *t = list;
int i = 0;
while(t!=NULL&&i<n){
t = t->next;
i++;
}
if(t!=NULL){
printf("please input value you want by change\n");
scanf("%d",&t->score);
}
else{
printf("节点不存在\n");
}
}
打印链表:
void show(LinkList *list){
LinkList *t = list;
while(t->next != NULL){
t = t->next;
printf("%d",t->score);
}
}