采用Linux內(nèi)核鏈表的實現(xiàn)思想,通過業(yè)務節(jié)點包含鏈表節(jié)點來將數(shù)據(jù)串起來。
linkedList.h
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供宜都網(wǎng)站建設、宜都做網(wǎng)站、宜都網(wǎng)站設計、宜都網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、宜都企業(yè)網(wǎng)站模板建站服務,10多年宜都做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
#ifndef LINKED_LIST_H
#define LINKED_LIST_H
#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
typedef struct LinkedListNodeStruct {
struct LinkedListNodeStruct *next;
}LinkedListNode;
typedef struct LinkedListStruct {
LinkedListNode header;
int length;
}LinkedList;
LinkedList* LinkedList_Create();
void LinkedList_Destory(LinkedList* list);
void LinkedList_Clear(LinkedList* list);
int LinkedList_Length(LinkedList* list);
int LinkedList_Insert(LinkedList* list, LinkedListNode* node, int pos);
LinkedListNode* LinkedList_Get(LinkedList* list, int pos);
LinkedListNode* LinkedList_Delete(LinkedList* list, int pos);
#endif // !LINKED_LIST_H
linkedList.c
#include"linkedList.h"
LinkedList* LinkedList_Create() {
LinkedList *list = malloc(sizeof(LinkedList));
memset(list, 0, sizeof(LinkedList));
list->length = 0;
list->header.next = NULL;
return list;
}
void LinkedList_Destory(LinkedList* list) {
if (list != NULL) {
free(list);
list = NULL;
}
}
void LinkedList_Clear(LinkedList* list) {
if (list != NULL) {
list->length = 0;
list->header.next = NULL;
}
}
int LinkedList_Length(LinkedList* list) {
if (list != NULL) {
return list->length;
}
}
int LinkedList_Insert(LinkedList* list, LinkedListNode* node, int pos) {
if (list == NULL || pos < 0 || node == NULL) {
return -1;
fprintf(stderr,"Wrong argument.\n");
}
LinkedListNode* cur = &list->header;
int i = 0;
while (i < pos && cur->next != NULL) {
cur = cur->next;
i++;
}
node->next = cur->next;
cur->next = node;
list->length++;
return 0;
}
LinkedListNode* LinkedList_Get(LinkedList* list, int pos) {
if (list == NULL || pos < 0) {
return NULL;
fprintf(stderr, "Wrong argument.\n");
}
LinkedListNode* cur = &list->header;
int i = 0;
while (i < pos && cur->next != NULL) {
cur = cur->next;
i++;
}
return cur->next;
}
LinkedListNode* LinkedList_Delete(LinkedList* list, int pos) {
if (list == NULL || pos < 0) {
return -1;
fprintf(stderr, "Wrong argument.\n");
}
LinkedListNode* cur = &list->header;
int i = 0;
while (i < pos && cur->next != NULL) {
cur = cur->next;
i++;
}
LinkedListNode* r = cur->next;
cur->next = cur->next->next;
list->length--;
return r;
}
測試代碼:
#include<stdio.h>
#include<stdlib.h>
#include"linkedList.h"
typedef struct BusinessNodeStruct {
LinkedListNode node;
int id;
char name[30];
}BusinessNode;
int main() {
LinkedList* list = LinkedList_Create();
BusinessNode t1 = {NULL,21,"Beijing1"};
BusinessNode t2 = { NULL,31,"Beijing2" };
BusinessNode t3 = { NULL,41,"Beijing3" };
BusinessNode t4 = { NULL,51,"Beijing4" };
LinkedList_Insert(list, (LinkedListNode*)&t2, 0);
LinkedList_Insert(list, &t3.node, 0);
LinkedList_Insert(list, (LinkedListNode*)&t4, 0);
for (int i = 0; i < list->length; i++) {
BusinessNode* bNode = (BusinessNode*)LinkedList_Get(list,i);
printf("bNode->name:%s,bNode->id:%d\n",bNode->name,bNode->id);
}
LinkedList_Delete(list, 1);
printf("-----------after delete------------");
for (int i = 0; i < list->length; i++) {
BusinessNode* bNode = (BusinessNode*)LinkedList_Get(list, i);
printf("bNode->name:%s,bNode->id:%d\n", bNode->name, bNode->id);
}
system("pause");
return 0;
}
linkedList.c
網(wǎng)頁標題:C語言實現(xiàn)單鏈表(LinkedList)
本文路徑:http://muchs.cn/article12/ihehgc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、域名注冊、電子商務、網(wǎng)站改版、微信公眾號、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)