資料結構 線性表 單迴圈鍊錶

2021-07-30 13:47:19 字數 2372 閱讀 1409

/*

*資料結構:線性表的鏈式表示

*單鏈表 迴圈鍊錶

*線性表元素序號從1算起

*date:2017/4/13

*/#include #include #define initsize 100

#define elemtype char

typedef struct lnodelnode,*linklist;

linklist createlist1(linklist &l); //頭插法建立單鏈表

linklist createlist2(linklist &l); //尾插法建立單鏈表

lnode *getelem(linklist l,int i); //按序號查詢表結點值

lnode *locateelem(linklist l,elemtype e); //按值按序號順序查詢表結點在鍊錶l中第一次出現的位置

void listinsert(linklist l,int i,elemtype e); //在第i個結點位置插入新結點,元素值為e

void listdelete(linklist l,int i,elemtype *e); //刪除第i個結點,用e返回刪除元素的值

void printlist(linklist l); //按先後序號列印鍊錶

bool emptylist(linklist l); //判斷鍊錶是否為空,為空就返回true,否則返回false

int lengthlist(linklist l); //返回鍊錶長度

void destorylist(linklist &l); //銷毀鍊錶

linklist createlist1(linklist &l)

return l;

}linklist createlist2(linklist &l)

r->next = l; //讓尾指標指向頭結點

return l;

}lnode *getelem(linklist l,int i)

return s;

}lnode *locateelem(linklist l,elemtype e)

return s;

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

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

void printlist(linklist l)

printf("\n");

}bool emptylist(linklist l)else

}void destroylist(linklist &l)

printf("%p\n",l);

printf("已銷毀鍊錶");

}int lengthlist(linklist l)

int main()else*/

createlist1(l1);

createlist2(l2);

printlist(l1);

printlist(l2);

printf("l1長度:%d\nl2長度:%d\n",lengthlist(l1),lengthlist(l2));

lnode *s1 = getelem(l1,3);

printf("l1第3個位置:%c\n",s1->data);

lnode *s2 = getelem(l2,4);

printf("l2第4個位置:%c\n",s2->data);

s1 = locateelem(l1,'e');

s2 = locateelem(l2,'p');

printf("s1 = locateelem(l1,'e'):%c\n",s1->data);

printf("s2 = locateelem(l2,'p'):%c\n",s2->data);

listinsert(l1,2,'z');

printf("listinsert(&l1,2,'z') :");

printlist(l1);

char e;

listdelete(l2,3,&e);

printf("listdelete(&l2,3,&e) : %c\n",e);

printlist(l2);

if(emptylist(l1))else

if(emptylist(l2))else

printf("l1長度:%d\nl2長度:%d\n",lengthlist(l1),lengthlist(l2));

destroylist(l2);

printf("l2\n");

printf("%p\n",l2);

return 0;

}

in.txt:

資料結構線性表 迴圈鍊錶

普通單鏈表 1 表尾的next指標指向null。2 從乙個結點出發只能找到後續的結點。迴圈單鏈表 1 表尾的next指標指向頭指標l。2 從乙個結點出發可以找到其他任何乙個結點。include include typedef struct lnodelnode,linklist 迴圈單鏈表初始化 b...

資料結構 線性表 單,雙 鍊錶操作

由於使用 引用更加方便,所以以後採用資料結構一書中的 格式 如下 include include typedef int elemtype typedef struct lnodelnode,linklist 頭部插入法 從空表開始,生成新結點,將讀取的資料存放進入新結點的資料域中。linklist...

資料結構之線性表 六 迴圈鍊錶

迴圈鍊錶的定義 1.概念與特點 迴圈鍊錶 是一種頭尾相接的鍊錶。表中的最後乙個結點的指標域指向頭結點,整個鍊錶形成環狀結構。優點 從表中任意乙個結點出發均可找到表中其他結點。補充 由於迴圈鍊錶中沒有null指標,所以涉及到遍歷操作時,其終止條件不再像單鏈表那樣判斷p或者p next是否為空,而是判斷...