如何建立單連結串列

時間 2021-09-05 11:55:52

1樓:匿名使用者

#include

#include

struct lnode//定義單連結串列結點

;struct lnode *creat();//creat(建立單連結串列)函式的呼叫宣告

void print (struct lnode *head,char a);//print(列印單連結串列)函式的呼叫宣告

void main ()//主函式

struct lnode *creat()//定義指標函式 creat(地址)及建立一個單連結串列 ,其返回值是一個單連結串列的首地址

rear->next=null;//指標 rear 移至最後一個結點處,將此結點的指標域 制空(null)

puts("the list you input is :");

print(head->next,a);//呼叫 print 函式

return head->next;//函式結束時返回建立的單連結串列的頭指標(此頭指標指向的結點為輸入的第一個數值所存放的結點)

}void print (struct lnode *head,char a)/*定義一個 print 函式,及列印函式,將單連結串列head中元素輸出,

a為要輸出單連結串列的名稱*/

puts(")");

}同上但不帶備註:

#include

#include

struct lnode

;struct lnode *creat();

void print (struct lnode *head,char a);

void main ()

struct lnode *creat()

rear->next=null;

puts("the list you input is :");

print(head->next,a);

return head->next;

}void print (struct lnode *head,char a)

puts(")");}

2樓:

首先構造一個結構體

結構體中含有一個指向本結構體的指標

然後宣告一個指向本結構體型別的指標head_ptr;

依次往下申請連結即可

如何建立單連結串列?

3樓:52茹月

建立單連結串列的常用方法有兩種:頭插法建表、尾插法建表

(1) 頭插法建表

該方法從一個空表開始,讀取陣列a中的字元,生成新結點,將讀取的資料存放到新結點的資料域中,然後將新結點插入到當前連結串列的表頭上,直到結束為止。演算法如下:

}(2) 尾插法建表

頭插法建立連結串列雖然演算法簡單,但生成的連結串列中結點的次序和原陣列元素的順序相反,若希望兩者次序一致,可採用尾插法。該方法是將新結點插到當前連結串列的表尾上,為此必須增加一個尾指標r,使其始終指向當前連結串列的尾結點。演算法如下:

r-> next = null;}

4樓:蒼可彤韻

1,前插法入鏈

//用前插法,逐步建立連結串列(使得結點入鏈)void

enlink1(int

num,int

score,char

name[10])}

5樓:碩鋒枝華容

#include

#include

using

namespace

std;

#define

datatype2

char

typedef

struct

node

linklist;

//尾插法建表

void

createlistr

(linklist

*&l,

datatype2

array)

r->next

=null;

}//頭插法建表

void

createlistf

(linklist

*&l,

datatype2

array)

}int

main();

linklist

*l;createlistr

(l,a);

linklist*p=

l->next;

while

(p!=

null)

cout

<

linklist

*h;createlistf

(h,a);

linklist*q=

h->next;

while

(q!=

null)

cout

<

return0;}

這是兩種不同的建立單連結串列的方法,你執行一下就能看它們之間的區別的了,我是用c++寫的,如果你要用c的話,把標頭檔案和那個輸出語句改一下就行了

6樓:羽強務採南

單連結串列的建立

typedef

struct

nodenode;

node

*create()

p=(node

*)malloc(sizeof(node));

p->data=x;

if(++i==1)

else

q=p;

}q->next=null;

return

head;}

7樓:晧寶是隻小猴子

1、連結儲存方法

連結方式儲存的線性表簡稱為連結串列(linked list)。

連結串列的具體儲存表示為:

① 用一組任意的儲存單元來存放線性表的結點(這組儲存單元既可以是連續的,也可以是不連續的)

② 連結串列中結點的邏輯次序和物理次序不一定相同。為了能正確表示結點間的邏輯關係,在儲存每個結點值的同時,還必須儲存指示其後繼結點的地址(或位置)資訊(稱為指標(pointer)或鏈(link))

注意:鏈式儲存是最常用的儲存方式之一,它不僅可用來表示線性表,而且可用來表示各種非線性的資料結構。

2、連結串列的結點結構

┌──┬──┐

|data | next│

└──┴──┘

data域--存放結點值的資料域

next域--存放結點的直接後繼的地址(位置)的指標域(鏈域)

注意:①連結串列通過每個結點的鏈域將線性表的n個結點按其邏輯順序連結在一起的。

②每個結點只有一個鏈域的連結串列稱為單連結串列(single linked list)。

【例】線性表(bat,cat,eat,fat,hat,jat,lat,mat)的單連結串列示如示意圖

3、頭指標head和終端結點指標域的表示

單連結串列中每個結點的儲存地址是存放在其前趨結點next域中,而開始結點無前趨,故應設頭指標head指向開始結點。

注意:連結串列由頭指標唯一確定,單連結串列可以用頭指標的名字來命名。

【例】頭指標名是head的連結串列可稱為表head。

終端結點無後繼,故終端結點的指標域為空,即null。

4、單連結串列的一般圖示法

由於我們常常只注重結點間的邏輯順序,不關心每個結點的實際位置,可以用箭頭來表示鏈域中的指標,線性表(bat,cat,fat,hat,jat,lat,mat)的單連結串列就可以表示為下圖形式。

5、單連結串列型別描述

typedef char datatype; /* 假設結點的資料域型別為字元 */

typedef struct node listnode;

typedef listnode *linklist;

listnode *p;

linklist head;

注意:①linklist和listnode *是不同名字的同一個指標型別(命名的不同是為了概念上更明確)

②linklist型別的指標變數head表示它是單連結串列的頭指標

③listnode *型別的指標變數p表示它是指向某一結點的指標

6、指標變數和結點變數

┌────┬────────────┬─────────────┐

│    │    指標變數    │     結點變數    │

├────┼────────────┼─────────────┤

│ 定義 │在變數說明部分顯式定義 │在程式執行時,通過標準 │

│ │ │函式malloc生成 │

├────┼────────────┼─────────────┤

│ 取值 │ 非空時,存放某型別結點 │實際存放結點各域內容 │

│ │ 的地址 | │

├────┼────────────┼─────────────┤

│操作方式│ 通過指標變數名訪問 │ 通過指標生成、訪問和釋放 │

└────┴────────────┴─────────────┘

①生成結點變數的標準函式

p = malloc( sizeof(listnode) );

/* 函式malloc分配一個型別為listnode的結點變數的空間,並將其首地址放入指標變數p中 */

②釋放結點變數空間的標準函式

free(p); /* 釋放p所指的結點變數空間 */

③結點分量的訪問

利用結點變數的名字*p訪問結點分量

方法一:(*p).data和(*p).next

方法二:p-﹥data和p-﹥next

④指標變數p和結點變數*p的關係

指標變數p的值——結點地址

結點變數*p的值——結點內容

(*p).data的值——p指標所指結點的data域的值

(*p).next的值——*p後繼結點的地址

*((*p).next)——*p後繼結點

注意:① 若指標變數p的值為空(null),則它不指向任何結點。此時,若通過*p來訪問結點就意味著訪問一個不存在的變數,從而引起程式的錯誤。

② 有關指標型別的意義和說明方式的詳細解釋

資料結構中如何建立單連結串列的問題

瑪麗米奇 include stdio.h include typedef struct node listnode listnode initlist void crealist listnode hd void printlist listnode hd void freelist listnod...

c 建立單連結串列這樣寫為什么會出現ACCESS VIOLATION錯誤

給你改了一下,不知是不是你所需要的 include include include using namespace std typedef struct lnodelnode,linklist void showlinklist linklist l,string name p l a p a n ...

單連結串列尾插法為什麼需要尾指標呢,單連結串列尾插法為什麼需要一個尾指標呢?

在雨中的幻想 遍歷連結串列的用來判斷到達尾部。比如 node p a while p 只針對你的這個問題來說,你的思路沒有問題,但是你的這個思路在 裡提現就必須要用到尾指標了,在迴圈建立單連結串列的時候,每個迴圈裡的內容是必須要一樣的吧?那麼你必然會將新生成的結點放在頭結點後邊,而迴圈裡如果都是這樣...