一,實驗內容:鍊錶的建立、插入與刪除操作
二.程式清單
三.思考
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 按位查...