博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表的基本操作
阅读量:5236 次
发布时间:2019-06-14

本文共 1571 字,大约阅读时间需要 5 分钟。

这是我第一篇博文。准备写成一个系列,关于数据结构的。今天开始最简单的,链表。

定义:

1 struct ListNode{2     int m_nValue;3     ListNode* m_pNext;4 };

向链表的末尾插入节点:

PS:由于此处头指针可能改变(NULL的时候),所以传入了指向头结点指针的指针。

1 void AddToTail(ListNode **pHead, int mValue){ 2     ListNode* pNew = new ListNode(); 3     pNew->m_nValue = mValue; 4     pNew->m_pNext = NULL; 5     if(*pHead == NULL){ 6         *pHead = pNew; 7     }else{ 8         ListNode* pNode = *pHead; 9         while(pNode->m_pNext!=NULL){10             pNode = pNode->m_pNext;11         }12         pNode->m_pNext = pNew;13     }14 }

好,测试一下这个功能。这里用了一个遍历输出链表的方法:

#include 
using namespace std;

void PrintList(ListNode *pHead){

while(pHead!=NULL){
cout<<pHead->m_nValue<<" ";
pHead = pHead->m_pNext;
}
cout<<endl;
}

int main(){    ListNode *pList = NULL;    for(int i=0 ;i<10; i++){        AddToTail(&pList, i);        PrintList(pList);    }}

再来一个从尾到头打印单链表的函数:

#include
void PrintListReversingly(ListNode *pHead){ stack
nValues; while(pHead!=NULL){ nValues.push(pHead->m_nValue); pHead=pHead->m_pNext; } while(!nValues.empty()){ int value = nValues.top(); cout<
<<" "; nValues.pop(); } cout<

反转单链表

ListNode* ReverseList(ListNode *pHead){
ListNode* pNode = pHead; ListNode* pPre = NULL; while(pNode != NULL){ ListNode *pNext = pNode->m_pNext; pNode->m_pNext=pPre; pPre = pNode; pNode= pNext; } return pPre;}

 

转载于:https://www.cnblogs.com/zhangweijie/archive/2013/03/30/2988017.html

你可能感兴趣的文章
[bzoj1004] [HNOI2008] Cards
查看>>
应该是实例化对象的没有对属性赋值时,自动赋值为null,但不是空指针对象引用...
查看>>
原生HttpClient详细使用示例
查看>>
几道面试题
查看>>
Factory Design Pattern
查看>>
python中贪婪与非贪婪
查看>>
guava API整理
查看>>
无锁编程笔记
查看>>
jquery mobile
查看>>
如何在vue单页应用中使用百度地图
查看>>
Springboot使用步骤
查看>>
Spring属性注入
查看>>
Springboot-配置文件
查看>>
Springboot-日志框架
查看>>
SpringBoot-thymeleaf
查看>>
P1908-逆序对
查看>>
P1192-台阶问题
查看>>
一、使用pip安装Python包
查看>>
spring与quartz整合
查看>>
Kattis之旅——Eight Queens
查看>>