数据库作业: 输入一组整数,建立带头结点的单链表,并实现线性表的求长度、插入和删除等 *** 作。

数据库作业: 输入一组整数,建立带头结点的单链表,并实现线性表的求长度、插入和删除等 *** 作。,第1张

昨天闲着没事写了个C++的约瑟夫环问题的解决。。

是带头结点的循环单链表。。只要改一两处地方就可以改成普通单链表。。

求长度、插入、删除 *** 作都有。。。

#include <iostream>

#include <vector>

#include <asserth>

using namespace std;

template <class T>

class LinkedList{

typedef struct LNode{

T value;

LNode next;

}LNode, pNode;

private:

pNode headNode;

int size;

public:

LinkedList(){

headNode = new LNode;

headNode->value = NULL;

headNode->next = headNode;

size = 0;

}

~LinkedList(){

}

void add(T &t){

pNode node = new LNode;

node->value = t;

node->next = headNode;

pNode tmp = headNode;

while(tmp->next != headNode){

tmp = tmp->next;

}

tmp->next = node;

size ++;

}

bool remove(T t){

pNode pre, node;

pre = headNode;

node = headNode->next;

while(node!=headNode){

if(node->value == t){

pre->next = node->next;

size --;

//T rt = node->value;

delete node;

return true;

}

pre = node;

node = node->next;

}

return false;

}

T get(int index){

//assert( index < size);

if(index >= size){

throw 1;

}

pNode node = headNode->next;

int i=0;

for(;i<index;i++){

node = node->next;

}

return node->value;

}

int getSize(){

return size;

}

void printList(){

cout <<"list size: " << size << ", elements: " << endl;

for(pNode p = headNode->next; p!=headNode; p=p->next){

cout << p->value << " ";

}

cout << endl;

}

void resefu(){

int n = 9, k = 6, m = 5;

pNode cur = headNode;

for(int i=0; i<k; i++){

cur = cur->next;

}

while(size > 0){

for(int i=1; i<m ; i++){

cur = cur->next;

if(cur == headNode){

i--;

}

}

T tmp = cur->value;

cur = cur->next;

cout << "-------------remove " << tmp << endl;

remove(tmp);

printList();

}

}

};

/

void main(){

LinkedList<int> list;

int n = 9, k = 1, m = 5;

for(int i=1; i<=n; i++){

listadd(i);

}

// listprintList();

listresefu();

}/

链表非常有用, 有用原因如下

1 插入删除的效率极高

2 插入删除节点不会导致其他节点发生改变(我指的是其他节点的内存地址)

数据结构那本上说到的每一种结构都非常有用, 链表那是最基本, 最常用, 最简单一种 也是面试比较喜欢出的题目

以上就是关于数据库作业: 输入一组整数,建立带头结点的单链表,并实现线性表的求长度、插入和删除等 *** 作。全部的内容,包括:数据库作业: 输入一组整数,建立带头结点的单链表,并实现线性表的求长度、插入和删除等 *** 作。、C语言链表很重要吗数据结构学完了,我们同学有自学数据库的,后来说链表没用啦!!比较迷茫了,求指教!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/sjk/9860863.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存