单向链表实现反转
来源:互联网 发布:2017淘宝捉猫猫技巧 编辑:程序博客网 时间:2024/05/21 04:26
前沿:用单向链表实现了队列的插入和删除操作。并且实现了队列的反串。
#include <stdio.h>
#include <stdlib.h>
struct Node
{
int data;
struct Node *next;
};
struct List
{
struct Node *head;
struct Node *rear;
unsigned int NodeNumber;
};
bool revers(List *ListNode);
void creat_list(List *ListNode)
{
ListNode->head = NULL;
ListNode->rear = NULL;
ListNode->NodeNumber = 0;
}
bool AddNode(unsigned int NodeData, List *ListNode)
{
Node *AddData = (Node *)malloc(sizeof(Node));
AddData->data = NodeData;
AddData->next = NULL;
if(ListNode == NULL)
{
return false;
}
else
{
if(ListNode->NodeNumber == 0 )
{
ListNode->head = AddData;
}
else
{
ListNode->rear->next = AddData;
}
ListNode->rear = AddData;
ListNode->NodeNumber++;
}
return true;
}
//实现的是队列,先进先出的操作
bool DelNode(unsigned int *NodeData,List *ListNode)
{
Node *DelAddress = NULL;
if( 0 == ListNode->NodeNumber || NULL==ListNode)
{
return false;
}
else
{
ListNode->NodeNumber--;
*NodeData = ListNode->head->data;
DelAddress = ListNode->head;
ListNode->head = ListNode->head->next;
free(NodeData);
}
return true;
}
void main()
{
List TextList;
Node now;
unsigned int AddDeldata = 0;
creat_list(&TextList);
printf("input a data to add list\n");
scanf("%d",&AddDeldata);
while((9>AddDeldata)&&(AddDeldata>0))
{
AddNode(AddDeldata, &TextList);
scanf("%d",&AddDeldata);
}
revers(&TextList);
now = *(TextList.head);
while ( now.next != NULL)
{
printf("%d\n",now.data);
now = *(now.next);
}
printf("%d\n",now.data);
}
bool revers(List *ListNode)
{
Node *front,*middle,*last;
front = ListNode->head;
ListNode->rear = front;
middle = front->next;
last = middle->next;
if (front==NULL)
{
return false;
}
if(middle==NULL)
{
return true;
}
front->next = NULL;
while (last != NULL)
{
middle->next = front;
front = middle;
middle = last;
last = last->next;
}
middle->next = front;
ListNode->head = middle;
return true;
}
- 单向链表实现反转
- JAVA实现单向链表反转
- 反转单向链表的实现
- 单向链表反转-java实现
- 反转单向链表 (java 语言实现)
- 实现单向链表的反转
- 单向链表反转
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 反转单向链表
- 单向链表反转
- 单向链表反转
- 单向链表反转
- Java Map按键排序和按值排序
- iPhone 开发(一) Hello World 初试
- 分布式计算 并行计算 网格计算 云运算
- iPhone 开发(一) Hello World 开始
- QT库的安装方法
- 单向链表实现反转
- javascript 引擎 V8 介绍
- centos5中主机dns的配置
- java环境变量小技巧和细节
- 以求医为例谈搜索引擎排序算法的基础原理
- Java 基础一些代码练习笔记(StringBuffer)
- J2EE的多层模型(二)交互
- 王汎森:治學經驗談 ── 一些心得,一些反省
- POI操作Excel:cell的背景颜色类型