首页 > 代码库 > C++ 动态链表
C++ 动态链表
C++ 动态链表 用类写的
头文件代码:
1 #include<iostream> 2 #include<string> 3 //动态创建链表 4 using namespace std; 5 class LNode { 6 private: 7 string StudentNum; 8 string Name; 9 int age; 10 LNode *next; 11 public: 12 LNode() {}//构造函数 13 ~LNode() {}//析构函数 14 void Init(LNode **L); 15 int GetLen(LNode *L);//得到链表长度 16 void InsertElem(LNode *L,int i,string sn,string nm,int age);//插入 17 void DeleteElem(LNode *L,int i);//删除 18 void show(LNode *L);//显示 19 void destory(LNode *L); 20 }; 21 void LNode::Init(LNode **L) 22 { 23 *L = new LNode(); 24 (*L)->next = NULL; 25 } 26 int LNode::GetLen(LNode *L) 27 { 28 LNode *p = L; 29 int num=0; 30 while (p != NULL) 31 { 32 p = p->next; 33 num++; 34 } 35 return num; 36 } 37 void LNode::InsertElem(LNode *L,int i,string sn,string nm,int age) 38 { 39 //判断插入的有效性 40 if (i<1 || i>GetLen(L) + 1) 41 { 42 cout << "无效插入\n"; 43 return; 44 } 45 LNode *p=NULL, *q=NULL, *s; 46 s = new LNode(); 47 s->StudentNum = sn; 48 s->Name = nm; 49 s->age = age; 50 51 q = L; 52 int pos = 0; 53 while (pos <i) 54 { 55 p = q; q = q->next; 56 pos++; 57 } 58 s->next = q; 59 p->next = s; 60 61 }//插入 在第i个结点之前插入 62 void LNode::DeleteElem(LNode *L, int i) 63 { 64 //判断删除的有效性 65 if (i < 1 || i > GetLen(L)) 66 { 67 cout << "删除无效\n"; 68 return; 69 } 70 LNode *p = NULL, *q = NULL; 71 q = L; 72 int pos = 0; 73 while (pos < i) 74 { 75 p = q; q = q->next; 76 pos++; 77 } 78 p->next = q->next; 79 delete q; 80 }//删除第i个节点 81 void LNode ::show(LNode *L) 82 { 83 LNode *p = L->next; 84 while (p != NULL) 85 { 86 cout << "*************************************" << endl; 87 cout << "学生学号:" << p->StudentNum << endl; 88 cout << "学生姓名:" << p->Name << endl; 89 cout << "学生年龄:" << p->age << endl; 90 cout << "*************************************" << endl; 91 p = p->next; 92 } 93 94 } 95 void LNode::destory(LNode *L) 96 { 97 LNode *p = NULL, *tem = NULL; 98 p = L; 99 while (p != NULL)100 {101 tem = p;102 p = p->next;103 delete tem;104 }105 }//销毁每一个节点
带头结点的单链表重点理解:
1.初始化传入的是头指针的地址
2.插入删除 指针的变化
C++ 动态链表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。