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... 給你改了一下,不知是不是你所需要的 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 只針對你的這個問題來說,你的思路沒有問題,但是你的這個思路在 裡提現就必須要用到尾指標了,在迴圈建立單連結串列的時候,每個迴圈裡的內容是必須要一樣的吧?那麼你必然會將新生成的結點放在頭結點後邊,而迴圈裡如果都是這樣...資料結構中如何建立單連結串列的問題
c 建立單連結串列這樣寫為什么會出現ACCESS VIOLATION錯誤
單連結串列尾插法為什麼需要尾指標呢,單連結串列尾插法為什麼需要一個尾指標呢?