由於線性表的順序儲存結構在進行插入與刪除是要移動大量的元素,會耗費大量的時間,線性表的鏈式儲存結構就完美的解決了這個問題。
首先是單鏈表的建立,有頭插法和尾插法。
頭插法:
/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(頭插法) */
void createlisthead(linklist *l, int n)
}
2.尾插法:
/* 隨機產生n個元素的值,建立帶表頭結點的單鏈線性表l(尾插法) */
void createlisttail(linklist *l, int n)
r->next = null; /* 表示當前鍊錶結束 */
}
完整**:
#include
#include
#include
typedef struct nodenode;
typedef struct node *linklist;
/*頭插法建立單鏈表*/
void createlisthead(linklist *l, int n)
}/*尾插法建立單鏈表*/
void createlisttail(linklist *l, int n)
r->next = null;
}/*單鏈表的插入*/
void listinsert(linklist *l, int i, int e)
if (!p&&j>i)exit(0);//第i個結點不存在
s = (linklist)malloc(sizeof(node));
s->data = e;
s->next = p->next;
p->next = s;
}/*單鏈表的刪除*/
void listdelete(linklist *l, int i)
if (!(p->next) && j>i) exit(0);
q = p->next;
p->next = q->next;
free(q);
}void visit(int c)
void listprint(linklist l)
printf("\n");
}int main()
單鏈表的插入與刪除的關鍵都是要先找到要操作位置的前乙個結點,而插入與刪除不同,對於找到第i-1個結點,插入是while (p&&j C語言實現線性表的鏈式儲存結構
為了表示每個資料元素ai與其後繼元素之間的邏輯關係,對ai來說,除了儲存其本身資訊外,還需要乙個儲存直接後繼的位置資訊。我們把資料元素資訊的域叫做資料域,把儲存直接後繼位置的域稱為指標域。指標域中儲存的資訊稱為指標或者鏈。這兩部分資訊組成元素ai的儲存映像,稱為結點。ifndef s linklis...
線性表 順序儲存結構 C語言實現
參考 大話資料結構 程杰 部落格 豆瓣 主要包括 列表定義 判斷列表是否為空 初始化列表 列印列表 清空列表 得到第i個位置元素 元素定位 列表第i個元素插入 列表第i個元素刪除 計算列表長度 include include define ok 1 define error 0 define tru...
線性表的順序儲存結構(C語言實現)
最近在研究資料結構,看了好多資料結構方面的書,但好多書都是用的偽 實現,對初學者或者語言功底不深厚的同學來說很不友好,也有好多書說是用c語言實現,但應用了c 的東西,比如c 中的引用,導致 晦澀難懂。學資料結構不能只是看書,一定要將各種結構用 實現,我也將各個部分實現的 貼出來。首先是線性表的順序儲...