鍊錶基本操作及面試題

2021-08-07 12:26:47 字數 2033 閱讀 1588

標頭檔案

#ifndef _linked_list_h__

#define _linked_list_h__

#include

using namespace std;

#include

typedef int datatype;

struct node

datatype _data;

node* _prev;

node* _next;

}; class list

;

實現函式

#define _crt_secure_no_warnings 1

#include"linkedlist.h"

list::list()

:_phead(null)

{}//建構函式

list::list(size_t n, datatype data)

}//拷貝建構函式

list::list(const

list& ls)

}//賦值運算子過載

list& list:: operator=(const

list& ls)

_phead = new node;

node* tmp = _phead;

node* cur = ls._phead;

while (cur&&cur->_next)

}return *this;

}//銷毀函式

void list::destroy()

}//析構函式

list::~list()

//頭插乙個函式

void list::pushfront(datatype x)

//頭刪乙個元素

void list::popftont()

del = del->_next;

cur->_next = del->_next;

del->_next->_prev = cur;

delete del;

}//尾插/尾刪乙個元素

void list:: pushback(datatype x)

node* newnode = new node(x);

cur->_next = newnode;

newnode->_prev = cur;

}void list:: popback()

while (cur->_next)

free(cur);

prev->_next = null;

}//任意位置插入或者刪除乙個元素

void list::insert(node* pos, datatype x)

node* newnode = new node(x);

newnode->_next = cur->_next;

cur->_next->_prev = newnode;

cur->_next = newnode;

newnode->_prev = cur;

}void list::erase(node* pos)

prev->_next = cur->_next;

cur->_next->_prev = prev;

delete cur;

}//查詢值為x的第乙個出現的位置

node* list::find(datatype x)

if (null != cur)

return

null;

}//列印函式

void list::display()

cout << "null"

<< endl;

}

測試函式

#define _crt_secure_no_warnings 1

#include"linkedlist.h"

void test1()

void test2()

int main()

鍊錶常用操作及面試題

鍊錶是一種比較基礎的資料結構,雖然在acm比賽中不常用,但是在面試中還是比較常問的,所以拿出來寫了一下,發現很多錯誤,由於操作中用到很多指標,所以不經常寫的話很容易寫錯。這裡寫了一下鍊錶的建立,比較基礎!然後是刪除鍊錶的元素,需要考慮刪除的是否為第乙個元素。然後是找鍊錶的倒數第k個元素,可以用兩個指...

鍊錶操作面試題

include using namespace std struct node int value node next node find node phead,int t 一 刪除鍊錶中某個節點 思路 先找到要刪除的節點位置 bool deletet node phead,int t else e...

鍊錶操作面試題

include include include define datetype int typedef struct node node,pnode void printlist pnode head 列印鍊錶 printf null n void bubblesort pnode phead 使用...