資料結構之單鏈表

2021-08-08 20:56:09 字數 1847 閱讀 5176

什麼是結構體?

通俗的講,結構體是用來描述某種事物所含屬性的集合。

假如現在你需要定義乙個描述學生某門課程成績的結構體。那麼這個結構體應該含有學號、姓名、課程名稱、該門課程的成績等基本資訊。

struct student
如何定義結構體?

定義結構體的一般形式為:

struct struct_tag //結構體標誌(即型別)

structure variables; //此結構體宣告的變數

如何使用結構體?

結構體變數在使用上跟簡單的資料型別變數(如 int)使用上並無太大區別!比如你可以使用int *p來定義個指向int型別的指標p。同樣的,你也可以使用相似的方式來來定義乙個指向結構體型別的指標。如:typedef struct student *stu

有的時候,處於記憶體中的資料並不是連續的。那麼這時候,我們就需要在資料結構中新增乙個屬性,這個屬性會記錄下面乙個資料的位址。有了這個位址之後,所有的資料就像一條鍊子一樣串起來了,那麼這個位址屬性就起到了穿線鏈結的作用。

相比較普通的線性結構,鍊錶結構的優勢是什麼呢?我們可以總結一下:

單個節點建立非常方便,普通的線性記憶體通常在建立的時候就需要設定資料的大小

節點的刪除非常方便,不需要像線性結構那樣移動剩下的資料

節點的訪問方便,可以通過迴圈或者遞迴的方法訪問到任意資料,但是平均的訪問效率低於線性表

typedef

int elemtype;

struct linknode; typedef

struct linknode *linkedlist;

void creatqueuelist(linkedlist *l,int n)

}

//建立棧式單鏈表(頭插法) n->建立幾個節點

void creatstacklist(linkedlist *l,int n)

}

status insertbyindex(linkedlist l,int i,elemtype e)

//如果位置不合法

if(!p||j>i-

1) s=(linkedlist)malloc(sizeof(struct lilinknode));

s->

data

=e; s->next=p->next;

p->next=s;

return ture;

}

兩種插入演算法的思想基本一致,此處不在一一贅述,直接上**

status insertbyelem(linkedlist l,elemtype ele,elemtype e)

return

true;

}

void  destroylist(linklist *l)

}

status linkedlistdelete(linkedlist l,int i,elemtype *e)

if(!p->next||j>i-1)

return error;

*e=p->next->data;

p->next=p->next->next;

free(p->next;)

}

資料結構之單鏈表

date 08 07 06 descript 單鏈表的實現與應用 public class linlist public node gethead 定位函式 public void index int i throws exception if i 1 current head.next int j...

資料結構之單鏈表

鍊錶 儲存結構的一種,包含兩個部分,資料域和指標域,相對於順序儲存結構來說,插入和刪除的演算法時間複雜度只為o 1 定義 定義 typedef struct node linklist linklist,指標指向每乙個元素 typedef struct nodenode 以下為簡單的c語言實現 in...

資料結構之單鏈表

由於順序表再插入或者刪除時需要移動大量資料,並且如果表比較大,會比較難分配連續的儲存空間導致儲存資料失敗。因此可以採用鍊錶結構,鍊錶結構是一種動態儲存分配的結構形式,可以根據需要動態的申請所需的儲存單元。鍊錶又分為單鏈表,雙向鍊錶,以及單迴圈鍊錶,多重鏈的迴圈鍊錶。本文先介紹單鏈表。典型的單鏈表結構...