2025年2月27日 星期四 甲辰(龙)年 腊月廿七 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言双向链表的创建

时间:10-08来源:作者:点击数:58

输入以 -1 作为结束标志的整数序列(以空格分隔),将它们作为结点的数值,建立一个双向链表。分别从头到尾、从尾到头输出这些链表数据。

C语言代码清单 1:创建双向链表并从两个方向分别输出链表数据

  • #include <stdio.h>
  • #include <stdlib.h>
  • #include <malloc.h>
  • struct node
  • {
  • int data;
  • struct node *next, *pre;
  • } *head, *tail, *p, *new; //定义链表结点指针
  • int main( )
  • {
  • int c;
  • printf("请输入以空格分隔的若干整数(-1结束输入):");
  • head = malloc(sizeof(struct node)); //创建初始链表
  • head->next = NULL; head->pre = NULL; //初始化头结点指针域
  • head->data = scanf("%d",&c); //初始化头结点数值域
  • p = head; //当前指针赋值
  • scanf("%d",&c);
  • while(c != -1){ //循环插入结点
  • new = malloc(sizeof(struct node));
  • new->data = c; //新结点数值域赋值
  • new->next = NULL; //新结点后继指针指向为空
  • new->pre = p; //新结点前驱指针指向当前结点 p
  • p->next =new; //当前结点 p 的后继指针指向新结点
  • p = new; //当前结点指针重置为新插入的结点
  • scanf("%d",&c);
  • }
  • tail = p;
  • for(p=head; p!=NULL; p=p->next) //从头到尾打印结点数据
  • printf("%d ",p->data);
  • printf("\n");
  • for(p=tail; p!=NULL; p=p->pre) //从尾到头打印结点数据
  • printf("%d ",p->data);
  • system("pause");
  • return 0;
  • }

运行结果为:

请输入以空格分隔的若干整数(-1结束输入):8 48 2 6 7 334 -1
1 48 2 6 7 334
334 7 6 2 48 1

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门