線性表之鍊錶基本操作的實現1

2021-09-23 05:56:08 字數 3951 閱讀 8387

這裡,我們首先實現單鏈表的基本操作。

1.建立單鏈表

linklist createlinklist(linklist l)

2.採用前插法插入資料

void insertelem_for(linklist head,user user)    //即把每次插入的資料都設定為首元結點

3.採用後插法插入資料

void insertelem_back(linklist head,user user)   //即把每個插入的資料都放在最後一位

4.在某個位置插入乙個結點

bool addelem(linklist head,int index,user user)

if(!head || j>index+1)

linklist p=(linklist)malloc(sizeof(lnode));

p->user=user;

p->next=head->next; //將目標結點指向當前位置的結點

head->next=p; //將當前位置的前乙個結點指向目標結點,此時目標結點插入到當前位置

return true;

}

5,根據某個位置返回對應的結點資訊

user getelembyindex(linklist head,int index)

if(!head || j>index)

return head->user;

}

6.根據結點資訊找到該結點在鍊錶中的位置

int getindexbyuser(linklist head,user user)

index++;

head=head->next;

}return bo?index:-1;

}

7.修改某個位置對應的結點資訊

void updateelembyindex(linklist head,int index,user user)

if(!head || j>index)

head->user=user;

}

8.刪除某個位置對應的結點

void deleteelembyindex(linklist head,int index)

if(!head || j>index)

linklist p=head->next; //p指向目標結點

free(p); //釋放目標結點

}

這裡我們對插入某個結點進行圖形講解(例4):

bool addelem(linklist head,int index,user user)

if(!head || j>index+1)

linklist p=(linklist)malloc(sizeof(lnode));

p->user=user; //1.將資料放置在資料域

p->next=head->next; //2.將目標結點指向當前位置的結點

head->next=p; //3.將當前位置的前乙個結點指向目標結點,此時目標結點插入到當前位置

return true;

}

第一步(p1=head):

第二步:

第三步:

這樣就完成了鍊錶的插入

這裡附上完整的**:

#includeusing namespace std;

typedef struct

user;

//單鏈表的儲存結構

typedef struct lnode

lnode,*linklist; //linklist為指向lnode的指標型別

//建立單鏈表,建立頭節點,指標指向頭節點

linklist createlinklist(linklist l)

//前插法向單鏈表中加入資料

void insertelem_for(linklist head,user user)

//後插法向單鏈表中加入資料

void insertelem_back(linklist head,user user)

//在某個位置新增乙個節點(插入)

bool addelem(linklist head,int index,user user)

if(!head || j>index+1)

linklist p=(linklist)malloc(sizeof(lnode));

p->user=user;

p->next=head->next;

head->next=p;

return true;

}//根據位置查詢某個子節點

user getelembyindex(linklist head,int index)

if(!head || j>index)

return head->user;

}//根據值查詢到節點在鍊錶中的位置

int getindexbyuser(linklist head,user user)

index++;

head=head->next;

}return bo?index:-1;

}//修改第n個節點的資訊

void updateelembyindex(linklist head,int index,user user)

if(!head || j>index)

head->user=user;

}//刪除第n個節點的資訊

void deleteelembyindex(linklist head,int index)

if(!head || j>index)

//當前的head應該指向的是目標節點的前乙個節點

linklist p=head->next;

head->next=p->next;

free(p);

}int main()

{ linklist l;

user user;

//建立單鏈表

linklist head=createlinklist(l);

//前插法插入資料

user.id=123;

strcpy(user.username,"gjw");

insertelem_for(head,user);

//後插法插入資料

//strcpy(user.username,"gjw3");

//insertelem_back(head,user);

//在某個位置新增乙個節點(插入)

user.id=123;

strcpy(user.username,"gjw1");

addelem(head,1,user);

//根據位置查詢某個子節點

//user user1=getelembyindex(head,1);

//cout學到這裡,其實發現單鏈表的實現也不難,是吧?

線性表的基本操作實現 基於鍊錶

用c 鍊錶方式實現了線性表的一些基本操作,包括插入元素,刪除元素,反轉線性表等.include include define error null typedef int elementtype typedef struct lnode ptrtolnode struct lnode typedef...

線性表(順序表) 基本操作 實現

定義 資料型別相同的n個元素構成的有限序列 所有呈遞增關係的整數不屬於線性表 無限 特點 線性表是線性結構,線性結構的基本特點是 除第乙個元素無直接前驅,最後乙個元素無直接後繼外,其他每個資料元素都有乙個前驅和後繼 位序 線性表中 第i個 元素,它的位序是從 1 開始的 區別陣列下標從 0 開始 用...

線性表之鍊錶

鏈式的線性表適用於經常進行刪除,插入操作的工作,如 訂票系統。鍊錶是用乙個乙個的節點連線起來的表,在物理上不是連續的,在邏輯上是連續的。通過節點間的指標指向來表示節點間的關係。所以在進行鍊錶操作之前,要先定義乙個節點結構。節點結構包含兩個東西 資料域,指標域。資料域就是用來存放資料的,指標域是用來表...