鍊錶一直是面試的高頻題,今天先總結一下單鏈表的使用,下節再總結雙向鍊錶的。本文主要有單鏈表的建立、插入、刪除節點等。
1、概念
單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。
鍊錶中的資料是以結點來表示的,每個結點的構成:元素 + 指標,元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。如下圖:
2、鍊錶的基本操作
singlelist.cpp:
#include "singlelist.h:stdafx.h
"#include
"singlelist.h
"#include
#include
#include
#include
#include
/*c++實現簡單的單鏈表操作
*/using
namespace
std;
singlelist::singlelist()
singlelist::~singlelist()
//建立單鏈表
node *singlelist::creatnode()
else
}head = head->next;
p->next =null;
printf(
"頭節點學生資訊為: %d%s\n
", head->num, head->name);
return
head;}//
單鏈表插入
node *singlelist::insertnode(node *head, int num, char*name)
if (s->num <= p1->num)
else
}else
return
head;}//
計算單鏈表長度
int singlelist::getlength(node *head)
return
length;}//
單鏈表刪除某個元素
node *singlelist::deletenode(node *head, int
num)
if (num == p1->num)
else
free
(p1);
}else
return
head;}//
單鏈表逆序
node *singlelist::reverselist(node *head)
head->next =null;
head =new_head;
return
head;}//
列印單鏈表
void singlelist::printlist(node *head)
}
#pragma oncetypedef關於逆序邏輯,研究了一下:1、主要思路:假設有單鏈表a->b->c->d,首先取出首節點a作為新逆序出來的鍊錶struct
student
node;
class
singlelist
;
這樣,原鍊錶就為:b->c->d,逆序後的新鍊錶為:a
2. 按照上述方法,依次取出b、c、d放入新鍊錶
2、圖形表示:
原始的單鏈表
初始狀態時,單鏈表如上圖所示,
head
指向頭節點a。
1. 取出原始鍊錶的第乙個節點
a,然後將該節點作為新鍊錶的頭節點
原始鍊錶:
新鍊錶:
2.然後同上處理:
原始鍊錶:
新鍊錶:
c 單鏈表基本操作
下午沒事,看資料結構。想到自畢業以後,都沒有寫過這些東西了。寫個鍊錶基本操作,還沒完全測試。includeusing namespace std node 節點 struct node int data node p 單鏈表 class link 通過陣列夠造 link int arr,int le...
C 單鏈表基本操作
include using namespace std struct node class list 建立帶頭結點的鍊錶,head next null 表示鍊錶為空,只有乙個頭結點 void creatlist1 int n 頭插入法建立鍊錶 void creatlist2 int n 尾插入法建立...
單鏈表基本操作
include include include include includeusing namespace std typedef struct node node,plinklist plinklist createfromhead node pstnode node malloc sizeof...