链表
当时学数据结构的时候,书上全是伪代码算法,本来c语言底子就差,一看伪代码更是一点兴趣都没有,但是数据结构是基石呀,总归要学的,现在来慢慢的填坑,同时一点一点记录一下。
链表的结构
链表的类型有好多,先学习了一下单链表的结构
单链表主要部分节点和指针,节点用来存储数据,由于链表的存储是离散型的,不是像数组一样可以分配一个完整的地址空间,所以需要用到指针来找寻下一个节点。
一个完整的链表可以分为头节点,首节点,中间节点,尾节点。
其中首节点是只有指针,用于指向头节点,首节点中不保存数据,设置首节点的原因是为了更方便的对链表进行操作。
结构体struct
typedef struct NODE{int data;struct NODE *next;
}NODE,*pNODE;
typedef的作用就是相当于定义一个变量,这个变量就和int是一个意思,结尾的NODE以及*pNODE代表着你可以定义一个int型的变量或者int型的指针
从这里开始就要写列表了
我们先来构建一个整体的框架
#include <stdlib.h>
#include <stdio.h>
typedef struct NODE{int data;struct NODE *next
}NODE,*pNODE;int main(){pNODE pHead=creat_list();//create_list()函数帮我们创建链表,然后返还给我们头指针show_list(pHead);//这个函数在得到一个头指针以后帮我们展示整个链表
}
creat_list()函数
思路:
pNODE creat_list(){int len;int value;pNODE pHead=(pNODE)malloc(sizeof(NODE));pNODE pTail=pHead;if (pHead==NULL){printf("失败");exit(-1);}printf("the len of the list");scanf("%d",&len);for (int i=0;i<len;i++){pNODE pNew=(pNODE)malloc(sizeof(NODE));if (pNew==NULL){printf("失败");exit(-1);}printf("the value of the N.%d",i+1);scanf("%d",&value);pNew->data=value ;pTail->next=pNew;pNew->next=NULL;pTail=pNew;}return pHead;
}
show_list()函数
通过头节点for循环即可
void show_list(pNODE pHead){
pNODE p;
p=pHead->next;
while (p){
printf("%d",p->data);
p=p->next;
}
}
完整的代码示例:
#include <stdlib.h>
#include <stdio.h>
#define NULL 0
typedef struct NODE{int data;struct NODE *next
}NODE,*pNODE;
pNODE creat_list();
void show_list();
int main(){pNODE pHead=creat_list();show_list(pHead);
}
pNODE creat_list(){int len;int value;pNODE pHead=(pNODE)malloc(sizeof(NODE));pNODE pTail=pHead;if (pHead==NULL){printf("失败");exit(-1);}printf("the len of the list");scanf("%d",&len);for (int i=0;i<len;i++){pNODE pNew=(pNODE)malloc(sizeof(NODE));if (pNew==NULL){printf("失败");exit(-1);}printf("the value of the N.%d",i+1);scanf("%d",&value);pNew->data=value ;pTail->next=pNew;pNew->next=NULL;pTail=pNew;}return pHead;
}
void show_list(pNODE pHead){
pNODE p;
p=pHead->next;
while (p){
printf("%d",p->data);
p=p->next;
}
}
本文发布于:2024-02-03 23:44:50,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170697807151739.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |