LinkList的create,delete,print
来源:互联网 发布:js获取元素的父节点 编辑:程序博客网 时间:2024/06/06 04:04
LinkList中指针的操作比较多,今天总算是搞明白了,先把代码记录一下。
#include <iostream>
#include<stack>
using namespace std;
typedef struct LinkNode{
int val;
struct LinkNode * next;
}LinkNode;
LinkNode * CreateLinkNode(int val){
LinkNode* node=new LinkNode();
node->val=val;
node->next=NULL;
return node;
}
void AddToTail(LinkNode ** phead,int val){
LinkNode* p=CreateLinkNode(val);
if(*phead==NULL){
*phead=p;
}else{
LinkNode* t=*phead;
while(t->next!=NULL){
t=t->next;
}
t->next=p;
}
}
void AddToHead(LinkNode** phead,int val){
LinkNode* node=CreateLinkNode(val);
if(*phead==NULL){
*phead=node;
}else{
node->next=*phead;
*phead=node;
}
}
void RemoveNode(LinkNode** phead,int val){
if(phead==NULL||(*phead==NULL))
return ;
LinkNode * pDelete=NULL;
if((*phead)->val==val){
pDelete=*phead;
*phead=pDelete->next;
}else{
LinkNode* node=*phead;
while((node->next!=NULL)&&(node->next->val!=val))
node=node->next;
if(node->next!=NULL&&(node->next->val==val)){
pDelete=node->next;
node->next=node->next->next;
}
}
if(pDelete!=NULL){
delete pDelete;
pDelete=NULL;
}
}
void PrintLinkList(LinkNode* phead){
if(phead==NULL)
return;
LinkNode* p=phead;
cout<<"Print List"<<endl;
while(p){
cout<<p->val<<",";
p=p->next;
}
cout<<endl<<endl;
}
void PrintReverse(LinkNode* phead){
if(phead==NULL)
return ;
stack<LinkNode *> st;
LinkNode* p=phead;
while(p){
st.push(p);
p=p->next;
}
cout<<"Reverse Print List"<<endl;
while(!st.empty()){
cout<<st.top()->val<<",";
st.pop();
}
cout<<endl<<endl;
}
void PrintRecursion(LinkNode* phead){
if(phead->next==NULL){
cout<<phead->val<<",";
return ;
}
PrintRecursion(phead->next);
cout<<phead->val<<",";
}
void PrintRec(LinkNode* phead){
cout<<"递归形式的从尾到头遍历:"<<endl;
PrintRecursion(phead);
}
int main(){
int val[10]={1,2,3,4,5,6,7,8,9,10};
LinkNode* L=NULL;
int i=0;
for(i=0;i<10;i++){
AddToTail(&L,val[i]);
}
PrintReverse(L);
PrintLinkList(L);
PrintRec(L);
return 0;
}
- LinkList的create,delete,print
- LinkList模板的实现
- ArrayList 、LinkList的区别
- LinkList 单链表的实现
- 自己写的LinkList
- 自己写的LinkList
- create & delete svn service
- LinkList
- LinkList
- LinkList
- linklist
- Linklist
- LinkList
- MongoDB和Redis的CRUD (Create,Read,Update,Delete)
- (Leetcode)Double pointer to implement delete Linklist node
- ArrayList和linkLIst的区别
- Vector,Arraylist,Linklist的区别
- linklist 链表的实现
- Unity3D GUI.VerticalSlider和HorizontalSlider用 javaScript
- 中文编码相关,python处理gbk编码的xml文件方法
- Android 开发中调用google语音接口
- BigDecimal
- Struts2接收参数的几种方式
- LinkList的create,delete,print
- 加减乘除Decimal
- c fseek()函数使用
- [第一次训练]Brackets
- 软件级负载均衡器(LVS/HAProxy/Nginx)的特点简介和对比
- 使用JDK中的安全包对数据进行加解密
- 利用JNI技术在Android中调用、调试C++代码
- boost库在工作(32)网络服务端之二
- 转 c++引用参数深入分析