C語言實現的迴圈單鏈表功能示例

2022-10-04 00:18:18 字數 3039 閱讀 8667

sclist.h

#ifndef __sclist_h__

#define __sclist_h__

#include

#include

#include

typedef int elemtype;

typedef struct node node,*pnode;

typedef struct list list;

void initsclist(list *list);//初始化迴圈單鏈表

void push_back(list *list, elemtype x);//在迴圈單鏈表的末尾插入元素

void push_front(list *list, elemtype x);//在迴圈單鏈表的頭部插入元素

void show_list(list *list);//列印迴圈單鏈表

void pop_back(list *list);//刪除迴圈單鏈表的最後乙個元素

void pop_front(list *list);//刪除迴圈單鏈表的第乙個元素

void insert_val(list *list, elemtype val);//將資料元素插入到迴圈單鏈表中(要求此時迴圈單鏈表中的資料元素順序排列)

node* find(list *list, elemtype x);//查詢迴圈單鏈表中資料值為x的結點

int length(list *list);//求迴圈單鏈表的長度

void delete_val(list *list, elemtype x);//按值刪除迴圈單鏈表中的某個資料元素

void sort(list *list);//對迴圈單鏈表進行排序

void reverse(list *list);//逆置迴圈單鏈表

void clear(list *list);//清除迴圈單鏈表

void destroy(list *list);//摧毀迴圈單鏈表

//優化

node* _buynode(elemtype x);//建立結點

#endif

sclist.cpp

#i"sclist.h"

node* _buynode(elemtype x)

void initsclist(list *list)

void push_back(list *list, elemtype x)

void push_front(list *list, elemtype x)

void show_list(list *list)

printf("nul.\n");

}void pop_back(list *list)

void pop_front(list *list)

void insert_val(list *list, elemtype x)

}node* find(list *list, elemtype key)

int length(list *list)

void delete_val(list *list, elemtype x)

if (p == list->last)

pop_back(list);

else

}void sort(list *list)

else

}}void reverse(list *list)

}void clear(list *list)

list->last = list->first;

list->last->next = list->first;

list->size = 0;

}void destroy(list *list)

main.cpp

#include"sclist.h"

void main()

break;

case 2:

printf("請輸入要插入的資料(-1結束):>");

while (scanf("%d", &item), item != -1)

break;

case 3:

show_list(&mylist);

break;

case 4:

pop_back(&mylist);

break;

case 5:

pop_front(&mylist);

break;

case 6:

printf("請輸入要插入的資料:>");

scanf("%d", &item);

insert_val(&mylist, item);

break;

case 7:

printf("請輸入要查詢的資料:>");

scanf("%d", &item);

p = find(&mylist, item);

if (p == null)

printf("要查詢的資料在單鏈表中不存在!\n");

break;

case 8:

printf("單鏈表的長度為%d\n", length(&mylist));

break;

case 9:

printf("請輸入要刪除的值:>");

scanf("%d", &item);

delete_val(&mylist, item);

break;

case 10:

sort(&mylist);

break;

case 11:

reverse(&mylist);

break;

case 12:

clear(&mylist);

break;

//case 13:

//destroy(&mylist);

//break;

default:

printf("選擇錯誤,請重新選擇!\n");

break;

}} destroy(&mylist);

}本文標題: c語言實現的迴圈單鏈表功能示例

本文位址:

c語言實現單鏈表

一 使用簡介 使用c語言實現了單鏈表的基本操作,共有四個檔案,兩個標頭檔案是常用的,後兩個分別是主函式,和對鍊錶的基本操作函式,倒入時候,須將四個檔案放在同乙個目錄下。二 心得 在書寫過程中,主要錯誤集中在指標的使用上,通過此次程式設計,對於指標的認識更加深刻,頭結點的存在,更大意義上是為了簡化指標...

C語言實現單鏈表

單鏈表可以說是基礎,有利於對指標的使用 結點 typedef int datatype typedef struct slistnode slistnode 實現的函式的宣告如下 slistnode buynode datatype x void printslist slistnode phead...

C語言實現單鏈表

dev c 編譯執行通過,實現了單鏈表的構建,清空,插入,刪除和查詢。include include include include include define ok 1 define error 0 typedef int elemtype typedef struct node node ty...