链表的基本 *** 作(C++)

链表的基本 *** 作(C++),第1张

概述本文章向大家介绍链表的基本 *** 作(C++),主要包括链表的基本 *** 作(C++)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

#include "stdafx.h"

#include

#include

using namespace std;

template

struct Node {

T data;

Node *next;

};

template

Node *CreatList(vector &arr)

{

//Node *head = (Node*)malloc(sizeof(Node));

Node *head = new Node;

Node *pre = head;

Node *p = NulL;

for (unsigned int i = 0; i < arr.size(); i++)

{

//p= (Node*)malloc(sizeof(Node));

p = new Node;

pre->next = p;

p->data = arr[i];

pre = p;

}

p->next = NulL;

return head->next;

}

template

voID PrintList(Node *head)

{

Node *p = new Node;

p->next = head; //为了方便遍历

while (p->next != NulL)

{

p = p->next;

cout << p->data << "->";

}

cout<<"NulL"<< endl;

}

template

Node* reverseList(Node *head)

{

Node *pre = NulL,*cur = head,*temp;

while (cur != NulL)

{

temp = cur->next;

cur->next = pre;//翻转

pre = cur;

cur = temp;

}

return pre;

}

//插入第n个元素后面

template

Node * addNode(Node *head,T val,int n)

{

Node *p = head;

int i = n - 1;

while (i > 0)

{

p = p->next;

i--;

}

Node *q = new Node;//要插入的元素

q->data = val;

q->next = p->next;

p->next = q;

return head;

}

//删除第n个元素后面

template

Node * delNode(Node *head,int n)

{

Node *p = head;

int i = n - 1;

while (i > 0)

{

p = p->next;

if (p->next == NulL)//最后一个元素,不作删除

return head;

i--;

}

if (p->next->next == NulL)//倒数第二个(删除最后一个)

p->next = NulL;

else

p->next = p->next->next;

return head;

}

int main()

{

vector arr(5);

arr = {1,2,3,4,5};

Node *head = CreatList(arr);

PrintList(head);

/*Node *rhead = reverseList(head);

PrintList(rhead);*/

Node *addhead = addNode(head,8,3);

PrintList(addhead);

delNode(addhead,5);

PrintList(addhead);

getchar();

return 0;

}

总结

以上是内存溢出为你收集整理的链表的基本 *** 作(C++)全部内容,希望文章能够帮你解决链表的基本 *** 作(C++)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1264532.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存