链表反转
来源:互联网 发布:企业所得税申报软件 编辑:程序博客网 时间:2024/05/24 02:24
1、定义节点
typedef struct Node{ int data; struct Node* pNext;}NODE, *PNODE;
2、创建链表
PNODE create_list(){ int len; int i; int val; PNODE pHead = (PNODE)malloc(sizeof(NODE)); if(pHead == NULL) return 0; PNODE pTail = pHead; pTail->pNext = NULL; cout<<"请输入您要生成的链表的个数:"; cin>>len; for(i = 0; i < len; i++) { cout<<"请输入第"<<i+1<<"个节点的值:"; cin>>val; PNODE pNew = (PNODE)malloc(sizeof(NODE)); pNew->data = val; pTail->pNext = pNew; pNew->pNext = NULL; pTail = pNew; } return pHead;}3、遍历链表
void traverse_list(PNODE pHead){ PNODE p = pHead->pNext; while(p != NULL) { cout<<p->data<<' '; p = p->pNext; }}
void traverse1_list(PNODE pHead){ PNODE p = pHead; while(p != NULL) { cout<<p->data<<' '; p = p->pNext; }}
4、反转链表
PNODE ReverseList(PNODE pHead){ // 如果链表为空或只有一个结点,无需反转,直接返回原链表头指针if(pHead == NULL || pHead->pNext == NULL)return pHead;PNODE pReversedHead = NULL; //反转后链表的头结点,初始化为NULLPNODE pCurrent = pHead; //定义pCurrent指向链表中头结点while(pCurrent != NULL){PNODE pTemp = pCurrent;pCurrent = pCurrent->pNext;pTemp->pNext = pReversedHead; //把pRverseHead定位为反转后链表的头结点,pReversedHead = pTemp; //把头结点放在ptemp位置.
}return pReversedHead;}5、main
int main(){ PNODE pHead = NULL; pHead = create_list(); traverse_list(pHead); cout<<endl; PNODE p = NULL; p = ReverseList(pHead->pNext); traverse1_list(p); cout<<endl; return 0;}
6、运行结果
0 0
- 链表反转
- 反转链表
- 单向链表反转
- 链表反转:
- 链表的反转
- 链表反转
- 反转单向链表
- 链表反转
- 单向链表反转
- 单向链表反转
- 链表的反转
- 链表反转
- 反转链表
- 链表反转
- 链表反转
- 链表反转
- 链表反转
- 链表的反转
- Linux 设备驱动之字符设备(二)
- TCP协议中的三次握手和四次挥手
- iOS Keychain钥匙串,应用间数据共享打造iOS上的全家桶
- 浅谈Hybrid技术的设计与实现第第2章
- TCP滑动窗口协议
- 链表反转
- SSH的搭建
- 一个台湾佬的ble mesh组网
- 为什么用session和cookie
- 第二周-项目3 体验复杂度-汉诺塔问题
- 图像特征提取参考网页:
- myeclipse修改工程名包名,web.xml报org.xml.sax.SAXParseException
- 延时执行
- IOS上线流程