03 單鏈表的實現

2021-06-22 11:36:05 字數 2451 閱讀 4827

這裡單鏈表的基本知識就不介紹了,個人覺得單鏈表增加乙個額外的表頭結構操作更加方便,當然這個也可以不用增加,只需要修改部分程式就可以了。

list.h標頭檔案程式如下:

/*

author: yuan yuan

date: 2014-06-15

*/#ifndef __list_h_

#define __list_h_

struct node;

typedef struct node *ptrnode;

typedef ptrnode list;

typedef ptrnode position;

struct node

;//清空單鏈表

list makeempty(list l);

//測試單鏈表是否為空

int isempty(list l);

//測試l是否是最後乙個

int islast(position p, list l);

//查詢x的位置

position find(int x, list l);

//刪除單鏈表中的x

void delete(int x, list l);

//查詢x的前乙個位置

position findprevious(int x, list l);

//將x插入到位置p之後

void insert(int x, list l, position p);

//刪除單鏈表

void deletelist(list l);

//返回單鏈表的表頭位置

position header(list l);

//返回第乙個元素的位置

position first(list l);

//返回p後面乙個位置

position advance(position p);

//返回當前位置p裡面的元素

int retrieve(position p);

#endif

list.c程式如下:

/*

author: yuan yuan

date: 2014-06-15

*/#include "list.h"

#include #include list makeempty(list l)

l->next = null;

return l;

}int isempty(list l)

int islast(position p, list l)

position find(int x, list l)

void delete(int x, list l)

}position findprevious(int x, list l)

return p;

}void insert(int x, list l, position p)

tmpcell->data = x;

tmpcell->next = p->next;

p->next = tmpcell;

}void deletelist(list l)

}position header(list l)

position first(list l)

position advance(position p)

int retrieve(position p)

單鏈表測試程式如下:

/*

author: yuan yuan

date: 2014-06-15

*/#include #include "list.h"

void printlist(const list l)

while(!islast(p, l));

printf( "\n" ); }}

int main(void)

printf("刪除單鏈表中部分資料……\n");

for( i = 0; i < 10; i += 2)

delete(i, l);

for(i = 0; i < 10; i++)

if((i % 2 == 0) == (find(i, l) != null))

printf("find %d failed!\n", i);

printf("輸出單鏈表中的資料……\n");

printlist(l);

deletelist(l);

return 0;

}

測試結果如下:

單鏈表的實現

include includetypedef struct node 定義鍊錶 snode snode creat 建立鍊錶的函式 q next null return head int length snode head 測鍊錶的結點數 return i void display snode he...

單鏈表的實現

單鏈表夜市線性表的一種表現形式,乙個表節點由乙個資料空間和乙個指標域組成。指標域記錄下乙個結點的位址。鍊錶在插入,刪除功能中效率高。但是讀取某個結點的時候需要順序讀取。效率不如順序儲存形式。下面是一些鍊錶實現的 鍊錶.cpp 定義控制台應用程式的入口點。include stdafx.h define...

單鏈表的實現

單鏈表是資料結構中重要並且基礎的一環,學習資料結構就需要知道單鏈表有的常用操作。1 單鏈表的頭插式建立 2 單鏈表的尾插式建立 3 單鏈表的長度計算 4 單鏈表的列印輸出 5 單鏈表的釋放操作 6 單鏈表是否為空判斷 7 單鏈表在指定index插入指定元素 8 單鏈表刪除指定index的節點 9 單...