資料結構 實驗2 單鏈表

2021-10-01 03:06:03 字數 3293 閱讀 6499

【問題描述】

設計乙個單鏈表操作演示程式。

【基本要求】

設計實現乙個帶頭結點的單鏈表的操作演示程式,提供乙個使用者介面,可演

示的基本功能包括:

(1)初始化單鏈表;

(2)輸入並建立單鏈表;(頭插入法、尾插入法均可)

(3)輸出單鏈表中的元素;

(4)在單鏈表指定位置插入元素;

(5)在單鏈表指定元素之前插入元素;

(6)刪除單鏈表指定位置的元素;

(7)刪除單鏈表指定元素之前的元素;

(8)刪除單鏈表所有指定值的元素。

**實現:

#include

#include

#include

#include

#define ok 1

#define false 0

#define true 1

#define error 0

#define infeasible -1

#define overflow -2

typedef

int status;

typedef

int elemtype;

typedef

struct lnode

lnode,

*linklist;

status create

(linklist &l)

printf

("申請空間成功!\n");

printf

("建立成功!\n");

l->next=

null

;return ok;

}lnode *

getelem

(linklist l,

int i)

return p;

}status length

(linklist l)

return i;

}status insert

(linklist &l,

int i,elemtype e)

//指定位置插入 if(

!p||j>i-1)

lnode *s;

s=(linklist)

malloc

(sizeof

(lnode));

s->data=e;

s->next=p->next;

p->next=s;

return ok;

}status tinsert

(linklist &l,elemtype x,elemtype e)

//指定元素前插入

else

return ok;

}while

(p->next!=

null

)else}if

(t==1)

else

return ok;

}status delete

(linklist &l,elemtype e,

int flag)

//刪除某一元素

lnode *p=l;

int t=0;

lnode *q;

while

(p!=

null

)else

else}}

if(t==1)

else

return ok;

}status locatedelete

(linklist &l,

int i,elemtype &e)

//刪除某一位置元素

lnode *p,

*q;if

(i<

1||i>

length

(l)+1)

p=getelem

(l,i-1)

; q=p->next;

p->next=q->next;

e=q->data;

free

(q);

printf

("刪除的元素為%d\n"

,e);

printf

("刪除成功!\n");

return ok;

}status tlocatedelete

(linklist &l,elemtype x,elemtype &e)

//刪除指定元素前乙個元素

lnode *p=l->next;

lnode *q=l;

int t=0;

if(p->data==x)

while

(p!=

null

)else}if

(t==1)

else

return ok;

}status shuchu

(linklist l)

//輸出鍊錶

}printf

("\n");

return ok;

}status charu

(linklist &l)

//鍊錶插入操作的集合

else

}status shanchu

(linklist &l)

//鍊錶刪除操作的集合

else

}else

if(flag==0)

else

}else

if(flag==2)

else

}return ok;

}int

main()

printf

("長度為:\n");

int len;

len=

length

(l);

printf

("%d\n"

,len)

;shuchu

(l);

printf

("*******************************\n");

printf

("* 插入元素 :1 *\n");

printf

("* 刪除元素 :2 *\n");

printf

("* 退出 :0 *\n");

printf

("*******************************\n");

int num;

while(1

)if(num==0)

}printf

("退出成功!\n");

return0;

}

單鏈表 資料結構實驗

資料結構實驗 單鏈表 實現順序表的各種基本運算 並在此基礎上設計乙個主程式,完成如下功能 1 初始化順序表l 元素型別為char型 2 依次採用尾插法插入a,b,c,d,e元素 3 輸出順序表l 4 輸出順序表l的長度 5 判斷順序表l是否為空 6 輸出順序表l的第3個元素 7 輸出元素 a 的位置...

資料結構實驗 單鏈表

編寫乙個完整的程式,實現單鏈表的建立 插入 刪除 輸出等基本操作。1 建立乙個帶頭結點的單鏈表。2 計算單鏈表的長度,然後輸出單鏈表。3 查詢值為x的直接前驅結點q。4 刪除值為x的結點。5 把單向鍊錶中元素逆置 不允許申請新的結點空間 6 已知單鏈表中元素遞增有序,請寫出乙個高效的演算法,刪除表中...

資料結構 2 單鏈表

單鏈表與順序鍊錶不同,順序鍊錶在宣告時在記憶體中開闢一塊連續的儲存空間進行鍊錶資料項的儲存。所以單鏈表的項只需要儲存其資料,根據資料所在的序號進行訪問直接由鍊錶類控制,因為屋裡儲存區域連續,所以能夠很方便實現這些資料的訪問,插入和刪除。單鏈表在記憶體中不適用連續的空間儲存,所以單鏈表的項實際儲存兩個...