//.... 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...