循环链表
来源:互联网 发布:微机原理接口编程题 编辑:程序博客网 时间:2024/06/06 18:16
/*循环链表*/#include<stdio.h>typedef struct node{ int data; /*数据域*/ struct node * next; /*指针域*/}Node,*LinkList;LinkList CreateLinkList(int n) /*建表*/{ LinkList h,p,q; int i,x; h=malloc(sizeof(Node)); /*生成头结点*/ p=h; p->next=NULL; /*初始化*/ for(i=1;i<=n;i++) { printf("Num %d:",i); scanf("%d",&x); q=malloc(sizeof(Node));/*生成新结点*/ q->data=x; p->next=q; /*链接到头结点*/ p=q; /*指向新的结点*/ } q->next=h; /*尾结点指向头结点*/ return h;}void PrintLinkList(LinkList h)/*输出*/{ LinkList p; p=h->next; while(p->next!=h->next) /*尾结点的下一结点不是头结点*/ { printf("%d ",p->data); p=p->next; }}LinkList LocaleLinkList(LinkList h,int i)/*定位*/{ LinkList p; p=h->next; int j=0; while(j<i && p->next!=h->next) { j++; p=p->next; } if(i==j) return p; /*查找到第i个节点*/ else return (NULL);}void InsertLinkList(LinkList h,int x,int i)/*插入*/{ LinkList p,q; if(i==1) p=h->next; else p=LocaleLinkList(h,i-1); if(p==NULL) printf("插入位置有误!\n"); else { q=malloc(sizeof(Node)); q->data=x; q->next=p->next; /*新结点的下一结点链入i结点下一结点*/ p->next=q; /*i结点下一结点链入新结点*/ }}main(){ LinkList L; int i,n,x; printf("创建链表,输入结点个数:"); scanf("%d",&n); L=CreateLinkList(n); printf("输出链表:"); PrintLinkList(L); printf("\n"); printf("输入一个结点和位置:"); scanf("%d%d",&x,&i); InsertLinkList(L,x,i); printf("输出链表:"); PrintLinkList(L); printf("\n");}
阅读全文
0 1
- 循环链表实现循环队列
- 循环链表与循环队列
- 循环链表
- 循环链表
- 双向循环链表
- 双向循环链表
- 循环链表实验
- 链表::循环链表
- 双向循环链表
- 双向循环链表
- 循环链表
- 循环链表
- 循环链表
- 循环链表建立
- 数据结构 循环链表
- 双向循环链表
- 循环链表详解
- 循环链表
- [hihocoder1526]序列的值
- Effective C++第二章-构造,析构,赋值 -2
- Spring boot +Quartz +mongodb的分布式定时任务详解
- 类模板函数使用时实例化说明
- Logstash的KV模式自动将数字转换成整数
- 循环链表
- 手机号码,邮箱地址,正则表达式
- Volley自定义一个Request
- 卸载EOS Studio上SVN插件操作过程
- sql统计分组的组数
- 238. Product of Array Except Self
- php在linux上解析word文档
- maven全局配置文件settings.xml详解
- constexpr说明以及g++4.8.2实测分析