輸入
為線性表的操作系列,每個操作一行,具體見樣例。
輸出
如果輸入為"empty", 則根據表是否為空輸出"empty"或 "not empty"。
如果輸入為"length",則輸出表長。
如果輸入為"insert i e",插入失敗則輸出"insert failed",否則在i位置插入e後輸出插入後表中的所有元素。
如果輸入為"getelem i ",引數i錯誤輸出"out of index",否則輸出在i位置的元素。
如果輸入為"locateelem e",如果未發現輸出"e is not found in list",否則輸出e在表中的位置。
如果輸入為"delete i",如果失敗輸出"delete failed",否則刪除i位置的元素後輸出插入後表中的所有元素。
具體參見樣例。
樣例輸入
empty
insert 1
7empty
insert 2
3length
insert 1
-100
length
insert 10
100length
insert 2
10000
empty
getelem 2
getelem 5
locateelem 999
locateelem 3
delete 0
delete 4
delete 1
length
樣例輸出
empty
7not empty73
list length is 2
-10073
list length is 3
insert failed
list length is 3
-100
1000073
not empty
the elem at position 2 is 10000
out of index
999 is not found in list
3 is found at the position 4
delete failed
-100
10000
710000
7list length is 2
#include
#include
#include
#define ok 1
#define error 0
#define overflow -2
typedef
int status;
//status 是函式返回值型別,其值是函式結果狀態**。
typedef
int elemtype;
//elemtype 為可定義的資料型別,此設為int型別
#define maxsize 100
//鍊錶可能達到的最大長度
typedef
struct lnode
lnode,
* linklist;
//linklist為指向結構體lnode的指標型別
status initlist
(linklist *l)
//演算法2.6 單鏈表的初始化
status destroylist
(linklist *l)
return ok;
}int
listlength
(linklist l)
return length;
}int
listempty
(linklist l)
status getelem
(linklist l,
int i, elemtype *e)
//單鏈表的取值
*e = l->data;
return ok;
}//getelem
intlocateelem
(linklist l,
int e)
//按值查詢
return error;
}//locateelem
status listinsert
(linklist *l,
int i, elemtype e)
//單鏈表的插入if(
!p || j > i -1)
return error;
b =(linklist)
malloc
(sizeof
(lnode));
b->data = e;
b->next = p->next;
p->next = b;
return ok;
}//listinsert
status listdelete
(linklist *l,
int i)
//演算法2.9 單鏈表的刪除
else
cnt++;
}return error;*/
}//listdelete
void
listprint
(linklist l)
/* lnode* p;
for (p = l->next; p; p = p->next)
cout << p->data << (p->next ? ' ' : '\n');*/
}int
main()
// cout << (listempty(l) ? "empty" : "not empty") << endl;
elseif(
strcmp
(op,
"insert")==
0)elseif(
strcmp
(op,
"length")==
0)elseif(
strcmp
(op,
"getelem")==
0)elseif(
strcmp
(op,
"locateelem")==
0)elseif(
strcmp
(op,
"delete")==
0)}destroylist
(&l)
;return0;
}
資料結構 鍊錶(純c語言實現)
include include typedef struct nodelnode,linklist linklist greatlinklist int n return list 實現鍊錶的插入操作。1 前驅結點不用找,前驅結點是作為函式的引數的,用來搞清要插入的結點的位置。2 將前驅結點的指標域...
c 鍊錶的實現
author jacky ma date 23th,may,07 主要實現 1 鍊錶的建立,2 逆置 3 排序 4 有序鍊錶的歸併 5 兩鍊錶連線 6 迴圈鍊錶的判定 include include using namespace std 鍊錶節點結構 struct linknode 建立單鏈表 l...
鍊錶的C 實現
陣列中插入乙個元素或者刪除乙個元素時,必須移動陣列中的元素,從而使動態列表的順序儲存低效。鍊錶可以解決這一問題,它由資料和乙個指向下乙個節點的指標組成。基本的操作有構造 判空 插入 刪除和遍歷。程式如下 include using namespace std template class list ...