1. 程式人生 > >簡單靜態、動態連結串列的建立

簡單靜態、動態連結串列的建立

靜態連結串列的建立:

#include <stdio.h>
struct student
{
	int number;
	float score;
	struct student *next;
};                                 //結點的定義
int main()
{
	struct student *head,*p,a,b,c;
	a.number=1234,a.score=90.5;
	b.number=1235,b.score=80.9;
	c.number=1238,c.score=97.6;
	head=&a,a.next=&b,b.next=&c,c.next=NULL,p=head;
	do                                         //輸出此靜態連結串列
	{	printf("%ld,%6.2f\n",p->number,p->score);
    p=p->next;}
    while(head!=NULL);
	return 0;
}
靜態連結串列較為簡單,只需注意指標域的連結,最後一個指標為空指標。在依次輸出連結串列就行了

單向動態連結串列:

#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct student)

    struct student
    {
        int num;
        float score;
        struct student *next;
    };
                                     //節點的定義
    struct student* creat(void)     //編寫建立動態連結串列的函式
    {
        struct student *p1,*p2,*head;
        p1=p2=(struct student*)malloc(LEN);
        scanf("%d %f",&p1->num,&p1->score);
        head=p1;
        while(p1->num)
        {
            p2->next=p1;     //A  line
            p2=p1;           //B  line
            p1=(struct student*)malloc(LEN);
            scanf("%d %f",&p1->num,&p1->score);         
        }
        p2->next=NULL;
        return (head);                        //返回值為建立的動態連結串列的頭指標
    }


int main()
{
    struct student *pt,*p;
    pt=creat();
    p=pt;
    if(p!=NULL)
    do                                        //輸出動態連結串列
    {
       printf("%d %5.1f\n",p->num,p->score);
        p=p->next;
    }while(p!=NULL);
    return 0;
}

A和B行的位置很關鍵,若放在scanf的後面,輸出連結串列的時候就會把 0 0給輸出來了,因此要放在前面。 建立動態連結串列的返回值是一個指標,指向結構體的指標。

構建好了後,再輸出連結串列就行了,方法和靜態連結串列的輸出方法一樣。

相關推薦

簡單靜態動態連結串列建立

靜態連結串列的建立: #include <stdio.h> struct student { int number; float score; struct student *next; };

C++語言--連結串列-7.1----連結串列動態連結串列

前言:我愛程式設計,編程使我快樂!! 我們知道,陣列式計算機根據事先定義好的陣列型別與長度自動為其分配一連續的儲存單元,相同陣列的位置和距離都是固定的,也就是說,任何一個數組元素的地址都可一個簡單的公式計算出來,因此這種結構可以有效的對陣列元素進行隨機訪問。但若對陣列

VS2010與VC++6.0使用靜態動態連結庫的不同

無論是VS2010,還是VC++6.0,若要使用靜、動態連結庫,都需要提供編譯、連結、執行時所需的檔案(編譯階段要使用連結庫的標頭檔案;連結階段要使用連結庫對應的標頭檔案;對於動態連結庫,在執行時還需要載入dll檔案),只不過二者設定的方式不同而已。 在VS2010中編寫

(C語言版)連結串列(一)——實現單向連結串列建立插入刪除等簡單操作(包含個人理解說明及註釋,新手跟著寫程式碼)

我學習了幾天資料結構,今天下午自己寫了一個單向連結串列的程式。我也是新手,所以剛開始學習資料結構的菜鳥們(有大牛們能屈尊看一看,也是我的榮幸)可以和我一起共同學習、討論,當然也很高興能指出我的錯誤,因為這是我們一起成長的過程。本程式碼包含我在寫程式時的一些個人理解的說

單鏈表的建立(靜態連結串列動態連結串列)

       連結串列是一種很重要的資料結構,在實際工作中也有著很多的應用,這次我們先討論一下最簡單的單鏈表。        關於單鏈表的操作有很多,當然最基本的就是要建立一個單鏈表,對於單鏈表來說,可以按照型別分為靜態連結串列和動態連結串列。 1.靜態連結串列 靜態連結串

【C語言】動態連結串列靜態連結串列建立

動態連結串列和靜態連結串列 #include<stdio.h> #include<stdlib.h> #include<malloc.h> struct wep{

C語言_動態連結串列簡單建立與節點刪除

程式詳解:        1、輸入學生的姓名和年齡,進行順序排列。        2、刪除其中某位學生的資料 #include<stdio.h> #include<stdlib.h> #include<string.h> #define

動態連結串列建立節點記憶體空間申請以及釋放

1.動態連結串列的初始化: typedef struct _STACK{     void* data;     int size;     struct _STACK* next;     struct _STACK* pre;} STACK; STACK *stack;

(C語言版)連結串列(四)——實現雙向迴圈連結串列建立插入刪除釋放記憶體等簡單操作

雙向迴圈連結串列是基於雙向連結串列的基礎上實現的,和雙向連結串列的操作差不多,唯一的區別就是它是個迴圈的連結串列,通過每個節點的兩個指標把它們扣在一起組成一個環狀。所以呢,每個節點都有前驅節點和後繼節點(包括頭節點和尾節點)這是和雙向連結串列不同的地方。我們看下雙向迴圈連結

Linux下靜態動態庫的建立和使用

Linux下靜態庫、動態庫的建立和使用 Linux庫檔名由:字首lib、庫名和字尾3部分組成,靜態庫通常以.a作為字尾,動態庫以.so作為字尾, Linux下把動態庫叫做共享庫,so即shared object的縮寫。 靜態庫是程式編譯連結時使用,動態庫是程式執行時使用。

單向非迴圈連結串列連結串列建立節點插入連結串列列印節點長度計算連結串列清空連結串列銷燬

/* 單向非迴圈連結串列:    初始化    前插入     後插入    列印    連結串列長度    清空 &

Windows下用Codeblocks建立一個最簡單的DLL動態連結

建立一個最簡單的只有一個get_id() 函式的DLL庫  一、建立C語言動態連結庫 1.新建一個動態庫的工程 File - New - Project - DLL - Go 新建的工程原來的main.cpp和main.h刪除,新建兩個檔案simple.

線性表(陣列單鏈表靜態連結串列迴圈連結串列雙向連結串列

線性表的定義 線性表(List):零個或多個數據元素的有限序列。 有幾個地方需要強調: 首先它是一個序列,也就是說元素之間是有順序的,若元素存在多個,則第一個元素無前驅,最後一個元素無後繼,其他每個元素都有且只有一個前驅和後繼。 然後線性表強調的是有限的。 最

資料結構——線性表 (順序表單鏈表靜態連結串列迴圈連結串列雙向連結串列

提示:以下內容不適合零基礎人員,僅供筆者複習之用。 一、線性結構的基本特徵: 1.集合中必存在唯一的一個“第一元素”; 2.集合中必存在唯一的一個 “最後元素”; 3.除最後元素在外,均有 唯一的後繼; 4.除第一元素之外,均有 唯一的前驅。 如:j

(C++版)連結串列(二)——實現單項迴圈連結串列建立插入刪除等操作

        連結串列(二)單向迴圈連結串列的實現,下面實現程式碼: #include <iostream> #include <stdlib.h> using namespace std; //結點類 class Node { public:

動態連結串列靜態連結串列的區別

靜態連結串列是用陣列實現的,是順序的儲存結構,在實體地址上是連續的,而且需要預先分配大小。動態連結串列是用申請記憶體函式(C是malloc,C++是new)動態申請記憶體的,所以在連結串列的長度上沒

動態連結串列建立及使用

連結串列的建立及使用一直是一個小難題,今天我分享一下我的學習心得吧。 首先,要建立一個頭結點。 struct node { int data; struct node *next; }; 完成後分為4步:1、建立連結串列 2、輸

動態連結串列建立

 #include <stdio.h> //List結構樣式 typedef struct node { int data; struct node *next; }Node; //建立head的空鏈 Node *

Linux下靜態動態庫(隱式顯式呼叫)的建立和使用及區別

顯式呼叫的動態庫的建立與隱式呼叫相同。(隱式呼叫與靜態庫的使用方法一樣,不需要包含匯出函式的標頭檔案(顯式呼叫也不用包含標頭檔案),只需要在編譯可執行程式時指定庫檔案的路徑)顯式呼叫和隱式呼叫的區別在於:編譯可執行程式時需要指定庫檔案的搜尋路徑,而顯式呼叫編譯可執行程式時不用加上動態庫的搜尋路徑(因為已經在主

靜態連結動態連結庫使用方法

 總結一下動態連結庫和靜態連結庫。 首先搞清楚幾個概念: 靜態庫:函式和資料被編譯進一個二進位制檔案,通常副檔名為.lib。在使用靜態庫的情況下,在編譯連線可執行檔案時,連結器從庫中複製這些函式和資料並把它們和應用程式的其他模組組合起來建立最終的可執行檔案(.exe檔案)。