双向链表的应用
来源:互联网 发布:ios wkwebview js弹窗 编辑:程序博客网 时间:2024/05/21 22:43
#include<stdio.h>#include<conio.h>#include<stdlib.h>typedef char DataType;typedef struct Node{DataType data;struct Node *prior;struct Node *next;}DListNode,*DLinkList;DListNode* GetElem(DLinkList head, int i);void PrintDList(DLinkList head);int CreateDList(DLinkList head, int n);int InsertDList(DLinkList henad, int i, char e);int InitDList(DLinkList *head){*head = (DLinkList)malloc(sizeof(DListNode));if (!head)return -1;(*head)->next = *head; //使头结点的prior和next指针指向自己(*head)->prior = *head;return 1;}int CreateDList(DLinkList head, int n){DListNode *s, *q;int i;DataType e;q = head;for (i = 1; i <= n; i++){printf("输入%d个元素", i);e = getchar();s = (DListNode*)malloc(sizeof(DListNode));s->data = e;//将新生成的结点插入双向循环链表s->next = q->next;q->next = s;s->prior = q;head->prior = s;//这里注意头结点的prior指向新插入的结点q = s; //q始终指向最后一个结点getchar();}return 1;}int InsertDList(DLinkList head, int i, DataType e){DListNode *p, *s;p = GetElem(head, i);//查找链表中第i个结点if (!p)return 0;s = (DListNode*)malloc(sizeof(DListNode));if (!s)return -1;s->data = e;//将s结点插入到双向链表中s->prior = p->prior;p->prior->next = s;s->next = p;p->prior = s;return 1;}DListNode* GetElem(DLinkList head ,int i){DListNode *p;int j;p = head->next;j = 1;while (p != head && j < i){p=p->next;j++;}if (p == head || j>i) //如果位置不整确,返回NULLreturn NULL;return p;}void main(){DLinkList h;int n, pos;char e;InitDList(&h);printf("输入元素个数:");scanf("%d", &n);getchar();CreateDList(h, n);printf("链表中的元素:");PrintDList(h);printf("请输入元素以及位置:");scanf("%c", &e);getchar();scanf("%d", &pos);InsertDList(h, pos, e);printf("插入元素后链表中的元素:");PrintDList(h);}void PrintDList(DLinkList head) //输出循环双链表中的每一个元素{DListNode *p;p = head->next;while (p != head){printf("%c", p->data);p = p->next;}printf("\n");}
0 0
- 双向链表的应用
- C++双向链表的应用
- 双向循环链表的应用
- 双向循环链表的应用
- c语言 双向循环链表的简单应用
- 双向队列的应用
- List 双向链表容器基础应用
- 单链表,双向循环链表应用
- 静态变量的应用--将二叉排序树转换为有序的双向链表输出
- 双向链表的应用—实现根据使用频率安排元素位置的功能
- 双向链表的排序
- 双向链表的查找
- 双向链表的建立
- 双向链表的实现
- 通用的双向链表
- 双向链表的实现
- 双向链表的实现
- 双向链表的建立
- python简单实例训练(21~30)
- Javaw.exe 正确打开方式
- 循环链表的简单应用
- VM 克隆的 centos 的Linux下网卡eth1如何修改为eth0解决办法
- 循环链表--约瑟夫问题
- 双向链表的应用
- 静态链表的应用
- 各种线性表的操作
- 线性表---就地逆置
- android studio 配置 SVN 详解
- 7
- 线性结构---连续存储[数组]
- 6- js 函数的四种调用方式
- ubuntu上使用PHP依赖管理工具Composer(二)——自动加载