C 資料結構單向連結串列報錯求大牛

2022-03-06 11:22:33 字數 6554 閱讀 4717

1樓:匿名使用者

#include

using namespace std;

template

struct node

;template

class linklist

;//建構函式

template

linklist::linklist(t a,int n)}//析構函式

template

linklist::~linklist()}//獲取連結串列長度

template

//linklist::getlength()int linklist::getlength()return j;

}//按位查詢

template

//linklist::get(int i)node* linklist::get(int i)if(!p)

else return p;

}//按值查詢

template

//linklist::locate(t x)int linklist::locate(t x)return -1;

}//插入操作

template

//linklist::insert(int i,t x)void linklist::insert(int i,t x)else throw"插入位置錯誤";

}//刪除操作

template

//linklist::delete(int i)t linklist::delete(int i)void main()

cout<<"連結串列長度為"

cout<<"刪除並返回第二個元素"<

cout<

2樓:匿名使用者

錯誤比較多,不詳細說了,你對照著看看基本就知道問題了#include

using namespace std;

template

struct node

;template

class linklist

;//建構函式

template

linklist::linklist(t a,int n)}//析構函式

template

linklist::~linklist()}//獲取連結串列長度

template

//linklist::getlength()int linklist::getlength()return j;

}//按位查詢

template

//linklist::get(int i)node* linklist::get(int i)if(!p)

else return p;

}//按值查詢

template

//linklist::locate(t x)int linklist::locate(t x)return -1;

}//插入操作

template

//linklist::insert(int i,t x)void linklist::insert(int i,t x)else throw"插入位置錯誤";

}//刪除操作

template

//linklist::delete(int i)t linklist::delete(int i)void main()

cout<<"連結串列長度為"

cout<<"刪除並返回第二個元素"<

cout<

c++ 單向連結串列和雙向連結串列有什麼區別?各自有什麼優缺點?

3樓:匿名使用者

一、指代不同

1、雙向連結串列:也叫雙鏈表,是連結串列的一種,每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅

二、優點不同

1、雙向連結串列:從雙向連結串列中的任意乙個結點開始,都可以很方便地訪問前驅結點和後繼結點。

2、單向連結串列:單個結點建立非常方便,普通的線性記憶體通常在建立的時候就需要設定資料的大小,結點的訪問方便,可以通過迴圈或者遞迴的方法訪問到任意資料。

三、缺點不同

1、雙向連結串列:增加刪除節點複雜,需要多分配乙個指標儲存空間。

2、單向連結串列:結點的刪除非常方便,不需要像線性結構那樣移動剩下的資料,但是平均的訪問效率低於線性表。

4樓:大野瘦子

區別:一、意思不同

雙向連結串列是每個節點有2個鏈結,乙個是指向前乙個節點(當此鏈結為第乙個鏈結時,指向的是空值或空列表),另乙個則指向後乙個節點(當此鏈結為最後乙個鏈結時,指向的是空值或空列表),意思就是說雙向連結串列有2個指標,乙個是指向前乙個節點的指標,另乙個則指向後乙個節點的指標。

二、使用場景不同

單向連結串列適用於節點的增加刪除,雙向連結串列適用於需要雙向查詢節點值的情況。

三、用法不同

每個雙鏈表的節點要比單鏈表的節點多乙個指標,而長度為n就需要 n*length(這個指標的length在32位系統中是4位元組,在64位系統中是8個位元組) 的空間,這在一些追求時間效率不高應用下並不適應,因為它佔用空間大於單鏈表所佔用的空間;這時設計者就會採用以時間換空間的做法,這時一種工程總體上的衡量。

優缺點:

一、單向連結串列

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。

缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是只能前進。

二、雙向連結串列

優點:可以找到前驅和後繼,可進可退。

缺點:增加刪除節點複雜,需要多分配乙個指標儲存空間。

5樓:匿名使用者

一、結構不一樣

1、單向連結串列:每個節點由乙個資料域和乙個指標域構成。

2、雙向連結串列:每個節點由乙個資料域和兩個指標域構成。

二、方向不一樣

三、適用不一樣

1、單向列表:適用於單向遍歷,儲存空間小的資料。

2、雙向列表:適用於雙向遍歷資料。

單向連結串列的優缺點:

1、優點:儲存空間小,增加刪除節點簡單。

2、缺點:只能從頭到尾遍歷。只能找到後繼節點,無法找到前驅節點。

雙向連結串列的優缺點:

1、優點:可以雙向遍歷,既能找到後繼節點,也能找到前驅節點。從任一節點都可以訪問到其他所有節點。

2、缺點:儲存空間大,增加刪除節點較複雜。

擴充套件資料連結串列是一種物理儲存單元上非連續、非順序的儲存結構,資料元素的邏輯順序是通過連結串列中的指標鏈結次序實現的。連結串列由一系列結點組成,每個結點包括兩個部分:乙個是儲存資料元素的資料域,另乙個是儲存下乙個結點位址的指標域。

6樓:射手座的

單向連結串列和雙向連結串列的區別:

一、方向不同

二、使用情況不同

1、單向連結串列:適用於節點的增加刪除。

2、雙向連結串列:適用於需要雙向查詢節點值的情況。

三、讀取不同

1、單向連結串列:只能單向讀取。

2、雙向連結串列:可以雙方向讀取。

單向連結串列和雙向連結串列的區別可看下圖:

單向連結串列的優點和缺點:

2、優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈;

3、缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是只能前進。

4、適用於節點的增加刪除。

雙向連結串列的優點和缺點:

1、雙向連結串列:有兩個指標,乙個指向前乙個節點,乙個後乙個節點。

2、優點:可以找到前驅和後繼,可進可退;

3、缺點:增加刪除節點複雜,多需要分配乙個指標儲存空間。

4、適用於需要雙向查詢節點值的情況。

單向連結串列(單鏈表)是連結串列的一種,其特點是連結串列的鏈結方向是單向的,對連結串列的訪問要通過順序讀取從頭部開始;連結串列是使用指標進行構造的列表;又稱為結點列表,因為連結串列是由乙個個結點組裝起來的;其中每個結點都有指標成員變數指向列表中的下乙個結點;

列表是由結點構成,head指標指向第乙個成為表頭結點,而終止於最後乙個指向null的指標。

雙向連結串列也叫雙鏈表,是連結串列的一種,它的每個資料結點中都有兩個指標,分別指向直接後繼和直接前驅。所以,從雙向連結串列中的任意乙個結點開始,都可以很方便地訪問它的前驅結點和後繼結點。一般我們都構造雙向迴圈連結串列。

7樓:愛講真話的阿拉蕾

2、功能不同:單向連結串列只能next ,雙向連結串列可以return。

3、單雙向不同:單鏈表只能單向讀取,雙向連結串列可以通過prev()快速找到前一結點。

單向連結串列優缺點:

1、優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈;

2、缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是只能前進。

雙向連結串列優缺點:

1、優點:可以找到前驅和後繼,可進可退;

2、缺點:增加刪除節點複雜,多需要分配乙個指標儲存空間。

8樓:你好嗎快樂嗎

單向連結串列:單向連結串列包含兩個域,乙個是資訊域,乙個是指標域。也就是單向連結串列的節點被分成兩部分,一部分是儲存或顯示關於節點的資訊,第二部分儲存下乙個節點的位址,而最後乙個節點則指向乙個空值。

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。

(雙向也不會死迴圈,迴圈連結串列忘了進行控制的話很容易進入死迴圈);缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是只能前進。

雙向連結串列:每個節點有2個鏈結,乙個是指向前乙個節點(當此鏈結為第乙個鏈結時,指向的是空值或空列表),另乙個則指向後乙個節點(當此鏈結為最後乙個鏈結時,指向的是空值或空列表)。意思就是說雙向連結串列有2個指標,乙個是指向前乙個節點的指標,另乙個則指向後乙個節點的指標。

優點:可以找到前驅和後繼,可進可退;缺點:增加刪除節點複雜。

9樓:人才

單向連結串列:

優點:單向連結串列增加刪除節點簡單。遍歷時候不會死迴圈。(雙向也不會死迴圈,迴圈連結串列忘了進行控制的話很容易進入死迴圈)

缺點:只能從頭到尾遍歷。只能找到後繼,無法找到前驅,也就是只能前進。

雙向連結串列:

優點:可以找到前驅和後繼,可進可退。

缺點:增加刪除節點複雜(其實就複雜一點點)一般應用中單向連結串列或迴圈連結串列居多,雙向連結串列不常用。當然特殊條件下雙向連結串列很方便。尤其是需要查詢到某個節點後再查其前驅的工作中。

用c++資料結構單鏈表寫一元多項式的相加 急求!!

10樓:x丶

//我以前寫過c語言的

#include

#include

#include

#define null 0

typedef struct node node;

node *creat(int n);

void print(node *head);

node *addpolyn(node *head1, node *head2);

node *delfirst(node *head, node *q);

void insertbefore(node *p1, node *p2);

int  compare(int a, int b);

main()

/*建立連結串列*/

node *creat(int n)

previous->next = null;

return head;

}/*一元多項式的想加,總體考慮,可分qa的指數比qb小,或等於pb(如果係數相加等於0和不等於0),或大於pb  裡面由insertbefore和delfirst兩個小模組組成一部分*/

node  *addpolyn(node *head1, node *head2)else

free(delfirst(hb, qb));

qa = ha->next;

qb = hb->next;              /*qb釋放後要重新賦值*/

break;

case 1 :                        /*如果qa-> expn > qb -> expn*/

delfirst(hb, qb);

insertbefore(ha, qb);       /*把qb插入到ha下乙個結點之前*/

qb = hb->next;

ha = ha->next;

break;

} }if(qb)

ha->next = qb;                  /*插入剩餘的pb*/

free(head2);

return head1;

}/*比較*/

int compare(int a, int b)

/*刪除結點q*/

node *delfirst(node *p1, node *q)

/*插入結點,引入結點p,可以讓p插入到p2和p1之間*/

void insertbefore(node *p1, node *p2)

/*列印,為了美觀程式分開列印*/

void print(node *head)

printf("%0.f * x^%d", current->coef, current->expn);}

資料結構c語言描述,資料結構(C語言描述)

include include include define datatype int define maxsize 1000 typedef struct nodebitreenode datatype bt maxsize bitreenode buildbtree datatype bt,in...

資料結構二叉樹的遍歷,C語言資料結構 二叉樹的遍歷

前序 根,左兒子,右兒子 中序 左兒子,根,右兒子 後序 左兒子,右兒子,根 首先是要牢記一上幾句話 比如這棵樹的中許遍歷,a有左兒子,先不訪問a,以此類推,直到d沒有左兒子,訪問d,然後訪問d的根b,然後應該訪問b的右兒子,但是b沒有,所以訪問b的根a,訪問完a以後訪問a的右子樹。先看c,c有左兒...

資料結構 將兩個有序的單鏈表合併成有序的單鏈表,要求用原

不管你是用什麼演算法給連結串列排序的,都可以用插入排序的方式將第二個連結串列插入到第乙個連結串列啊,include include define null 0 typedef struct lnode lnode linklist void createlist l linklist l,int n...