链表 逆序 例子
2012-03-16 12:45
197 查看
typedef struct _Node
{
char data[50];
struct _Node* pNext;
_Node()
{
memset(data,0,50);
pNext = NULL;
}
} Node;
Node* CreateLink(int n)
{
Node* pHeaer = NULL;
Node* pCurrentNode = NULL;
Node* pItemNode = NULL;
pHeaer = new Node;
sprintf(pHeaer->data,"This is the link header");
pCurrentNode = pHeaer;
for (int i=0; i < n; i++)
{
pItemNode = new Node;
sprintf(pItemNode->data,"This it item %d",i);
pCurrentNode->pNext = pItemNode;
pCurrentNode = pItemNode;
}
return pHeaer;
}
Node* ReverseLink(Node* pHer)
{
Node* pHeader = NULL;
Node* pCurrentNode = NULL;
Node* pNewNode = NULL;
Node* pNextNode = NULL;
if (!pHer->pNext)
{
return pHer;
}
pHeader = pHer;
pCurrentNode = pHeader->pNext;
while(pCurrentNode->pNext)
{
pNextNode = pCurrentNode->pNext;
pCurrentNode->pNext = pNewNode;
pNewNode = pCurrentNode;
pCurrentNode = pNextNode;
}
pHeader->pNext = pNewNode;
return pHeader;
}
void PrintLink(Node* pHeader)
{
if (pHeader)
{
Node* pCurrentNode = NULL;
pCurrentNode = pHeader;
while (pCurrentNode->pNext)
{
printf("Link item data: %s \n",pCurrentNode->data);
pCurrentNode = pCurrentNode->pNext;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Node* pLinkHeader = NULL;
pLinkHeader = CreateLink(10);
PrintLink(pLinkHeader);
printf("\n\n\n");
pLinkHeader = ReverseLink(pLinkHeader);
PrintLink(pLinkHeader);
getchar();
return 0;
}
{
char data[50];
struct _Node* pNext;
_Node()
{
memset(data,0,50);
pNext = NULL;
}
} Node;
Node* CreateLink(int n)
{
Node* pHeaer = NULL;
Node* pCurrentNode = NULL;
Node* pItemNode = NULL;
pHeaer = new Node;
sprintf(pHeaer->data,"This is the link header");
pCurrentNode = pHeaer;
for (int i=0; i < n; i++)
{
pItemNode = new Node;
sprintf(pItemNode->data,"This it item %d",i);
pCurrentNode->pNext = pItemNode;
pCurrentNode = pItemNode;
}
return pHeaer;
}
Node* ReverseLink(Node* pHer)
{
Node* pHeader = NULL;
Node* pCurrentNode = NULL;
Node* pNewNode = NULL;
Node* pNextNode = NULL;
if (!pHer->pNext)
{
return pHer;
}
pHeader = pHer;
pCurrentNode = pHeader->pNext;
while(pCurrentNode->pNext)
{
pNextNode = pCurrentNode->pNext;
pCurrentNode->pNext = pNewNode;
pNewNode = pCurrentNode;
pCurrentNode = pNextNode;
}
pHeader->pNext = pNewNode;
return pHeader;
}
void PrintLink(Node* pHeader)
{
if (pHeader)
{
Node* pCurrentNode = NULL;
pCurrentNode = pHeader;
while (pCurrentNode->pNext)
{
printf("Link item data: %s \n",pCurrentNode->data);
pCurrentNode = pCurrentNode->pNext;
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
Node* pLinkHeader = NULL;
pLinkHeader = CreateLink(10);
PrintLink(pLinkHeader);
printf("\n\n\n");
pLinkHeader = ReverseLink(pLinkHeader);
PrintLink(pLinkHeader);
getchar();
return 0;
}
相关文章推荐
- 数据结构实验之链表二:逆序建立链表 (sdut oj)
- 不借助辅助空间,直接逆序单链表
- 单向链表逆序
- 算法之链表逆序排列
- 单链表逆序
- 单链表操作:逆序、合并
- SDUTOJ 2117 数据结构实验之链表二:逆序建立链表
- 单链表逆序循环和递归2种方式
- 链表逆序、判断是否有环、求环的起点;两个链表是否相交、交点
- 面试题:用 Java 逆序打印链表
- 笔试题三:带头节点head链表逆序
- 链表逆序
- 算法题18 逆序(字符串、整数、单向链表)
- 92.leetcode Reverse Linked List II(medium)[链表逆序]
- 两种方法求单链表逆序
- 数据结构实验之链表二:逆序建立链表
- C/C++ 双链表之逆序的实例详解
- 将一个链表逆序并输出
- 【python中单链表的实现】——包括初始化、创建、逆序、遍历等
- 有一个带头结点的单链表L={a1,b1,a2,b2,...,an,bn},设计一个算法将其拆分成两个带头结点的单链表A和B,正序链表A={a1,a2,a3...,an},逆序链表B={bn,bn-1,