實驗四 單鏈表的插入和刪除

2021-08-21 06:49:15 字數 2270 閱讀 2557

一、實驗目的

1、 會定義單鏈表的結點型別。

2、 會對單鏈表的一些基本操作和具體的函式定義。

3、 掌握單鏈表的插入和刪除演算法。

二、實驗內容

該程式實現了單鏈表的插入和刪除。

三、實驗步驟

1、啟動vc++6.0

2、輸入程式

3、(1)link.h

typedef int elemtype;

typedef struct lnode

elemtype data;

lnode *next;

}*linklist;

void createlist(linklist &l,int n);

void listinsert(linklist &l,int i,elemtype e);

void listdelete(linklist &l,int i,elemtype &e);

void printlist(linklist l);

(2)linkc.cpp

#include

#include

#include "link.h"

void createlist(linklist &l,int n) 

{ // 逆位序

(插在表頭)輸入

n個元素的值,建立帶表頭結構的單鏈線性表

lint i;

linklist p;

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

l->next=null; // 先建立乙個帶頭結點的單鏈表

printf("請輸入

%d個資料

\n",n);

for(i=n;i>0;--i)

p=(linklist)malloc(sizeof(lnode)); // 生成新結點

scanf("%d",&p->data); // 輸入元素值

p->next=l->next; // 插入到表頭

l->next=p;

void listinsert(linklist &l,int i,elemtype e)

int j;

linklist p,s;

p=l;j=0;

while(p&&jp=p->next;++j;

if(!p||j>i-1) printf("錯誤

");s=(linklist)malloc(sizeof(lnode));

s->data=e;

s->next=p->next;

p->next=s;

void listdelete(linklist &l,int i,elemtype &e)

int j;

linklist p,q,s;

p=l;j=0;

while(p->next&&jp=p->next;++j;

if(!(p->next||j>i-1)) printf("錯誤

");q=p->next;

p->next=q->next;

e=q->data;

free(q);

void printlist(linklist l)

linklist p;

for(p=l->next;p!=null;p=p->next)

printf("%d  ",p->data);

(3)linkmain.cpp

#include

#include "link.h"

void main()

int n=5;

int i,j;

elemtype e; 

linklist l;

createlist(l,n); // 逆位序輸入

n個元素的值

printf("l="); // 輸出鍊錶

lb的內容

printlist(l);

printf("請輸入要插入元素的位置:

");scanf("%d",&i);

printf("請輸入要插入的元素:

");scanf("%d",&e);

listinsert(l,i,e);

scanf("插入後的

l=:");

printlist(l);

printf("請輸入要刪除元素的位置:

");scanf("%d",&j);

listdelete(l,j,e);

scanf("刪除後的

l=:");

printlist(l);

4、執行程式、查錯。

單鏈表的插入和刪除

常見的資料結構只有兩種 1 陣列 2 鍊錶 陣列中的元素是連續儲存的,而鍊錶的元素則可以不連續,只需要有指標指向下乙個元素即可。因此鍊錶適合儲存插入刪除比較頻繁的一組資料。另外鍊錶的儲存空間是動態的,不必預先分配指定的空間大小。下面介紹鍊錶的幾種常見操作。首先先定義乙個鍊錶 struct linkl...

單鏈表的插入和刪除

單鏈表的插入與刪除 單鏈表的插入 單鏈表第 i個資料插入結點的演算法思路 1.宣告乙個結點 p指向第乙個結點,初始化j從 1開始 2.當 j時,就遍歷鍊錶,讓 p的指標向後移動,不斷指向下乙個結點,j累加 1 3.若到鍊錶末尾 p為空,則說明第 i個元素不存在 4.否則查詢成功,在系統中生成乙個空結...

單鏈表插入刪除

在鍊錶的插入刪除操作上理解起來比順序表更為容易,其不需要變動在i位置前的所有的元素,只需要修改節點指標即可。插入 設在鍊錶的i位置插入新元素,設i 1節點的指標域為p,設插入的節點指標域為s,所以插入操作應該為 s next p next 將s的字尾改為p的字尾,p的字尾是原來的第i個點的指標域,將...