C语言实现
Creat函数,功能:给定头指针 建立一个双向链表
返回表头节点。
3条回答 默认 最新
- fuill 2022-03-12 10:19关注
#include<stdio.h> #define ElemType int typedef struct Node { ElemType data; //数据域 struct Node *prio; //前驱结点指针域 struct Node *next; //后继结点指针域 } Node, *PNode; //双链表管理结构 typedef struct List { PNode first; //指向头结点 PNode last; //指向尾结点 int size; //保存有效结点个数 } List; //初始化双链表 void InitDList(List *list) { //申请头结点 Node *s = (Node *)malloc(sizeof(Node)); //assert(s != NULL); //初始化时管理结点头指针和尾指针都指向头结点 list->first = list->last = s; //头结点的前驱指针域和后继指针域都先赋值为空 list->last->next = NULL; list->first->prio = NULL; //此时还没有有效结点 list->size = 0; } //头插 //获取结点 Node* _buynode(ElemType x) { //申请结点空间 Node *s = (Node *)malloc(sizeof(Node)); //assert(s != NULL); //为结点添加数据 s->data = x; s->next = s->prio = NULL; return s; } //尾部插入 void push_back(List *list, ElemType x) { //获取要插入的有效结点 Node *s = _buynode(x); //该结点与前驱结点建立连接 s->prio = list->last; //前驱结点与该结点建立连接 list->last->next = s; //更新管理结点中尾指针域的指向 list->last = s; //更新有效结点数 list->size++; } //查看双链表内的所以数据 void show_list(List *list) { //指向第一个有效结点 Node *p = list->first->next; while(p != NULL)//将每个有效结点内的数据输出 { printf("%d-->",p->data); p = p->next; } printf("Nul.\n"); } void creat(List list) { printf("输入节点个数:"); int n,data; scanf("%d",&n); for(int j=0; j<n; j++) { scanf("%d",&data); ElemType tem=data; push_back(&list,tem); } show_list(&list); } int main() { List list; InitDList(&list); creat(list); return 0; }
主要代码:https://blog.csdn.net/qq_44075108/article/details/109125866
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效
- ¥15 悬赏!微信开发者工具报错,求帮改
- ¥20 wireshark抓不到vlan
- ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
- ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持