C++中实现链表的删除和颠倒【1234ssc.com】
2014-10-22 16:43
274 查看
MFC工程中关于链表的操作
1.对于给定的整数n,编写算法删除链表中第n个节点,该链表的第一个节点由first指向。
由于C++中没有关于node的标准头文件,要先手动定义node类,此处只定义了简单的data和next指针以及析构函数部分的内容:
#include"node.h"之后就可以定义节点了。
此处定义出的链表 图示如下:
p3-->p2-->p1
3 -->2 -->1
关于eraseValue函数的定义:
函数调用及输出(改):
当n=1时会报错,有待解决。
2.编写一个算法来颠倒链表,不要复制链表元素,而是重置链接和指针,使得first指向原来的最后一个节点,且节点之间所有链接都反向。
未经输出测试:
初学c++和数据结构,有错误请尽管指出,感激不尽!!
1.对于给定的整数n,编写算法删除链表中第n个节点,该链表的第一个节点由first指向。
由于C++中没有关于node的标准头文件,要先手动定义node类,此处只定义了简单的data和next指针以及析构函数部分的内容:
1 class node 2 { 3 public: 4 node(const int &in,node *nextnode = NULL); 5 virtual ~node(); 6 node*next; 7 int data; 8 9 };
#include"node.h"之后就可以定义节点了。
1 node *p1,*p2,*p3; 2 p1=new node(1); 3 p2=new node(2,p1); 4 p3=new node(3,p2);
此处定义出的链表 图示如下:
p3-->p2-->p1
3 -->2 -->1
关于eraseValue函数的定义:
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
帝尊信誉平台【Q:737888396】
1 template <typename T> 2 void eraseValue(node*first,const T&n) 3 { 4 node *curr=first,*pre=NULL; 5 if(n==1) 6 { 7 first=first->next; 8 delete curr; 9 } 10 else {for(int i=1;i<n;i++) 11 { 12 pre=curr; 13 curr=curr->next; 14 } 15 16 pre->next=curr->next; 17 delete curr;} 18 19 }
函数调用及输出(改):
当n=1时会报错,有待解决。
1 node *cur=p3; 2 eraseValue(p3,2); 3 CString temp,str; 4 while(cur->data!=NULL) 5 { 6 temp.Format("%d ",cur->data); 7 str+=temp; 8 cur=cur->next; 9 } 10 AfxMessageBox(str);
2.编写一个算法来颠倒链表,不要复制链表元素,而是重置链接和指针,使得first指向原来的最后一个节点,且节点之间所有链接都反向。
未经输出测试:
1 template <typename T> 2 void reverse(node*first,const T&n) 3 { 4 node *front=NULL; 5 for(int i=0;i<n-1;i++) 6 { 7 node *curr=first,*pre=NULL; 8 while(curr->next!=NULL) 9 { 10 pre=curr; 11 curr=curr->next; 12 13 } 14 if(i==0&&curr->next==NULL) front=curr; 15 pre->next=NULL; 16 curr->next=pre; 17 } 18 if(i=n-1) first->next=front; 19 front=first; 20 }
初学c++和数据结构,有错误请尽管指出,感激不尽!!
相关文章推荐
- C++中实现链表的删除和颠倒
- (C++版)链表(一)——实现单向链表创建、插入、删除等相关操作
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- (C++版)链表(四)——实现双向循环链表创建、插入、删除等简单操作
- 左神的书——《程序员代码面试指南》之删除链表的中间节点或a/b节点 c++实现
- C++链表的创建和插入删除的实现
- 用c++实现单向链表的创建,插入和删除
- c++实现数据结构链表的插入 删除 倒置 取值(vs测试可以运行)
- C++链表的创建、插入、删除、查找、合并、排序、修改等操作的实现
- C++实现双向链表的创建,插入,修改,删除
- 《剑指offer》面试题57 删除链表中重复的结点 C++ 实现 以及 错误总结 (指针问题)!!
- 双向循环链表删除算法的C++程序实现
- c++实现单链表创建,删除,遍历,插入,修改操作
- c++实现双向链表的建立,插入,删除,合并,打印
- 左神的书——《程序员代码面试指南》之删除链表的倒数第k个节点 c++实现
- 单链表的插入删除操作(c++实现)
- 单链表的插入删除操作(c++实现)