设为首页 加入收藏

TOP

请用C/C++实现反转单链表算法
2014-10-19 00:08:31 来源: 作者: 【 】 浏览:39
Tags:请用 C/C 实现 反转 单链表 算法

#include


struct Node
{
int id;
struct Node *pNext;
};
typedef struct Node *Link; // 需要typedef,否则同时定义多个指针的时候不能写在同一行。


void reverseList(Link *ppHead) // 需要传递头节点的指针的地址,这是为了修改这个值。
{
Link p = *ppHead;
Link q, r; // <=> Node *q, *r;
q = p->pNext;
p->pNext = NULL;
while (q != NULL)
{
r = q->pNext; // 需要预先保存第三个节点的位置。


q->pNext = p;


p = q; // 把p,q 同时往后移一个位置。
q = r;
}
*ppHead = p;
}


void printList(const Link pHead)
{
Link p = pHead;
while (p != NULL)
{
std::cout << p->id << ” ”;


p = p->pNext;
}


std::cout << std::endl;
}


int main(void)
{
Link pHead, pPrev, pNext;
pHead = new Node;
pHead->id = 1;
pHead->pNext = NULL;
pPrev = pHead;
for (int i = 1; i < 5; i++)
{
pNext = new Node;
pNext->id = i + 1;
pNext->pNext = NULL;


pPrev->pNext = pNext;
pPrev = pNext;
}


printList(pHead);


reverseList(&pHead);


printList(pHead);


return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇IT外企那点儿事,其实外企也就那.. 下一篇请用带么写一个算法测试回环字符..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: