一直以來,對於資料結構都是後怕,但還是要啃下這骨頭的:
#pragma once
/**
* 作 者:[email protected]
* 摘 要:鍊錶的操作
*///帶頭節點的鍊錶
class linkedlist
};public:
linkedlist();
~linkedlist();
public:
void reset();
bool isempty();
void insert(int data, int key=-1);
void delete(int data);
void modify(int key, int data);
node* find(int data);
void print();//列印鍊錶
private:
node* head;
node* tail;
};
#include "linkedlist.h"
#include linkedlist::linkedlist()
linkedlist::~linkedlist()
tail = nullptr;
}void linkedlist::reset()
}bool linkedlist::isempty()
return false;
}void linkedlist::insert(int data, int key)
else
node* pnew = new node();//新增節點
pnew->data = data;
pnew->next = nullptr;
if (key == -1)
else
}void linkedlist::delete(int data)
}void linkedlist::modify(int key, int data)
}linkedlist::node* linkedlist::find(int data)
pprev = ptemp;
ptemp = ptemp->next;
} ptemp->prev = pprev;//記錄該節點前一節點
return ptemp;
}void linkedlist::print()
std::cout << std::endl;
}
int main(void)
//鍊錶的操作
std::cout << "-----鍊錶操作演示-----" << std::endl;
linkedlist directlist;
std::cout << sizeof(directlist) << " empty:" << directlist.isempty() << std::endl;
directlist.insert(1);
directlist.insert(3);
directlist.insert(5);
directlist.insert(7);
std::cout << "empty:" << directlist.isempty() << std::endl;
directlist.print();
directlist.insert(10,3);//在節點3後面新增10
directlist.print();
directlist.modify(7,9);//修改節點
directlist.print();
directlist.delete(5);//刪除節點
單鏈表實現增刪改查
include myhead.h 定義結構體表示單鏈表 struct siglelist 封裝鍊錶的初始化 struct siglelist list init 尾部插入 intinsert tail int newdata,struct siglelist head 中間插入,把newdata插入...
單鏈表增刪改查
include include include include using namespace std struct node node int x,node next null 帶參初始化 建立煉表頭結點,新增引用因為要改變指標的位址指向 void createlink node head 新增鍊...
單鏈表增刪改查
單鏈表單鍊錶 linked list 由各個記憶體結構通過乙個 next 指標鏈結在一起組成,每乙個內 存結構都存在後繼記憶體結構 鏈尾除外 記憶體結構由資料域和 next 指標域組成。單鏈表實現圖示 解析 data 資料 next 指標,組成乙個單鏈表的記憶體結構 第乙個記憶體結構稱為 鏈頭,最後...