線性表 單鏈表

2022-07-15 04:45:12 字數 1798 閱讀 7772

一,實驗內容:鍊錶的建立、插入與刪除操作

二.程式清單

三.思考

l.如果需要將新結點插入  到     第i個資料元素之後,演算法將如何改動?

2. 雙向鍊錶和迴圈鍊錶的定義和構造方法。

//

鍊錶的建立及插入、刪除操作

#include "

stdio.h

"#include

"stdlib.h

"#define null 0

#define error 0

#define ok 1

#define overflow -2

#define infeasible -1

//型別定義

typedef int

status;

typedef

intelemtype;

//定義鍊錶的儲存結構

typedef struct

lnode

lnode,*linklist; //

鍊錶的型別

status getelem_l(linklist l,

int i , elemtype &e)

//l為帶頭結點的單鏈表,當第i 個元素存在時,其值賦給e.

if(!p||j>i) return

error;

e=p->data;

return

ok;}

//逆序建立鍊錶

void creatlist_l1(linklist &l,int n) //

n為元素個數,l為頭結點

}//正序建立單鏈表

void creatlist_l2(linklist &l,int n ) ///

n為元素個數,l為頭結點

q->next=null;}//

輸出鍊錶

void

print(linklist l)}//

鍊錶的插入操作

int listinsert(linklist &l,int i,inte)

if(!p||j>i-1) return

error;

s=(linklist)malloc(sizeof

(lnode));

s->data=e; s->next=p->next;

p->next=s;

return

ok; }

//鍊錶的刪除操作

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

if(!(p->next)||j>i-1) return

error;

q=p->next;p->next=q->next;

e=q->data;free

(q);

return

ok; }

//對鍊錶的元素進行排序

status sortlinklist(linklist &l)

q=q->next;

}p=p->next;

}return

ok ;

}void mergelist_l(linklist la, linklist &lb, linklist &lc)

else

pc->next=pa?pa:pb;

free

(lb);}//

主函式通過呼叫建立、插入、刪除用輸出函式完成鍊錶的基本操作

intmain()

線性表 單鏈表

define crt secure no deprecate define crt secure cpp overload standard names 1 includeusing namespace std typedef struct node node node headpointer 頭指...

線性表 單鏈表

單鏈表結構與順序儲存結構對比 一 儲存分配方式 1 順序儲存結構用一段連續的儲存單元依次儲存線性表的資料元素 2 單鏈表採用鏈式儲存結構,用一組任意的儲存單元存放線性表的元素 二 時間效能 1 查詢 順序儲存結構o 1 單鏈表o n 2 插入和刪除 順序儲存結構o n 單鏈表找到位置後插入刪除時間o...

線性表 單鏈表

template struct node template class linklist 無參建構函式,建立只有頭結點的空鍊錶 linklist t a int n 有參建構函式,建立有n個元素的單鏈表 linklist 析構函式 int length 求單鏈表的長度 t get int i 按位查...