單鏈表的建立 插入刪除等操作

2021-08-01 09:30:40 字數 4502 閱讀 7300

//....  utili.h

#ifndef utili_h

#define utili_h

#include

using namespace std;

#include

#define bool int

#define

true

1#define

false

0#endif

//..... list.h

#ifndef

list

-h#define list_h

#include

"./utili.h"

#define size_t int

//有元函式宣告

template >

class list;

template>

class listnode

listnode(type d,listnode<

type

>

*n=null):data(d),next(n)

{}~listnode()

{}private:

type

data;

listnode<

type

>

*next;

};template>

class list

~list()

public:

void show_list();

void push_back(type

&x);

void push_front(type

&x);

void pop_back();

void pop_front();

bool insert_val(type

&x);

listnode<

type

>

*find(type

&x);

bool delete_val(type

&x);

void clear();

void quit_system(int &x);

void reverse();

void sort();

void destory();

private:

listnode<

type

>

*first;

listnode<

type

>

*last;

size_t size;

};//尾插

template>

void

list

<

type

>

::push_back(type

&x)//頭插

template>

void

list

<

type

>

::push_front(type

&x)

size++;

} //列印鍊錶

template>

void

list

<

type

>

::show_list()

cout<<

"over."

<}//頭刪

template>

void

list

<

type

>

::pop_front()

//尾刪

template>

void

list

<

type

>

::pop_back()

//按值插入

template>

bool list

<

type

>

::insert_val(type

&x) listnode<

type

>

*p=first;

while(p->next!=

null

&& p->next->

data

if(p->next==

null)

listnode<

type

>

*s=new listnode<

type

>(x);

if(s==

null)

return

false;

s->next=p->next;

p->next=s;

size++;

return

true;

}//查詢

template>

listnode<

type

>*

list

<

type

>

::find(type

&x) //返回節點的位址

//排序

template>

void

list

<

type

>

::sort()

}//按值刪除

template>

bool list

<

type

>

::delete_val(type

&x) listnode<

type

>

*p=find(x);

if(p==

null)

if(p==last)

else

}//清空

template>

void

list

<

type

>

::clear()

}//逆序

template>

void

list

<

type

>

::reverse()

}//停止

template>

void

list

<

type

>

::quit_system(int &x)

//摧毀

template>

void

list

<

type

>

::destory()

#endif

//....test.cpp

#include

"./utili.h"

#include

"./list.h"

int main()

case

3:

cout <<

"請輸入要插入的值(-1結束):>";

while (cin >> item, item !=

-1)

break;

case

4:

mylist.pop_front();

break;

case

5:

mylist.pop_back();

break;

case

6:

cout <<

"請輸入要插入的值:>";

cin >> item;

mylist.insert_val(item);

break;

case

7:

cout <<

"請輸入要查詢的數:";

cin >> item;

cout <<

cout

case

8:

cout <<

"請輸入要刪除的值:>";

cin >> item;

mylist.delete_val(item);

break;

case

9 :

mylist.clear();

break;

case

10:

mylist.quit_system(select);

break;

case

11: mylist.destory();

case

12:

mylist.reverse();

break;

case

13:

mylist.sort();

break;

default:

break;

} }

return

0;

}

單鏈表的建立 插入刪除等操作

單鏈表的建立 插入刪除等操作 c語言的指標以及結構體沒有學好,導致老師在說鍊錶時就已經懵了一圈了。typedef struct 和僅僅struct 的區別是花了無數的耐心才在乙個偶然的機會發現的。2 剛開始做資料結構實驗的時候一臉懵逼,不知道要做什麼,比如說建立鍊錶,我在螢幕上看不見我建立的鍊錶,我...

單鏈表 建立 插入 刪除 查詢 反轉等操作

ifndef list h define list h include include define notfound null typedef struct list node typedef struct list pnode typedef pnode plist typedef pnode ...

單鏈表的建立,插入,刪除等操作 精簡版

不多說廢話,直接上 1 include 2 include 34 定義節點型別,不帶頭結點 5 typedef struct node 6lnode 1011 建立鍊錶,12 從終端接收資料,使用尾部插入法完成。13 成功返回1,失敗返回014 15 int creatlist lnode h 16...