日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构(严蔚敏)之一——顺序表之c语言实现

發布時間:2025/3/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构(严蔚敏)之一——顺序表之c语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


順序表結構的實現:

#include <stdio.h> #include <stdlib.h> #include <malloc.h>#define LIST_INT_SIZE 100 #define LISTINCREMENT 10 #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define OVERFLOW -1typedef int ElemType; typedef int Status;typedef struct{ElemType *elem;int length;int listsize; }SqList;Status InitList(SqList *L)//初始化線性表 {L->elem = (ElemType *)malloc(LIST_INT_SIZE * sizeof(ElemType));if(!L->elem) exit(OVERFLOW);L->length = 0;L->listsize = LIST_INT_SIZE;return OK; }Status DestroyList(SqList *L)//銷毀線性表 {if(!L->elem) exit(ERROR);free(L->elem);L->elem = NULL;return OK; }Status CreatList_Sq(SqList *L,int n) {int i;printf("輸入%d個整數:\n",n);for(i=0;i<n;i++)scanf("\n%d",&L->elem[i]);return OK; }Status ClearList(SqList *L)//將線性表置為空表 {if(!L->elem) return ERROR;L->length = 0;return OK; }Status ListEmpty(SqList *L)//判斷線性表是否為空 {if(!L->elem || L->length < 0 || L->length > L->listsize) return ERROR;if(L->length == 0)return TRUE;elsereturn FALSE; }Status ListLength(SqList *L)//返回線性表長度 {if(!L->elem || L->length < 0 || L->length > L->listsize)return ERROR;return L->length; }Status GetElem(SqList *L, int i, ElemType *e)//用e返回第i個元素的值 {if(!L->elem || i < 0 || i > L->length) return ERROR;*e = L->elem[i-1];return OK; }Status LocatElem(SqList *L, ElemType e, int compare(void *, void *)) {if(!L->elem) return ERROR;int i;for(i = 0; i < L->length; i++){if(compare((ElemType *)e, (ElemType *)L->elem[i]) == TRUE)return i+1;}return FALSE; }Status PriorElem(SqList *L, ElemType cur_e, ElemType *pre_e) {int i;for (i = 1; i < L->listsize; i++) {if (L->elem[i] == cur_e) {*pre_e = L->elem[i-1]; /* 與Elemtype 相關*/return OK;}}return FALSE; }Status NextElem(SqList *L, ElemType cur_e, ElemType *next_e) {int i;for (i=0; i < L->listsize - 1; i++) {if (L->elem[i] == cur_e) {*next_e = (int )L->elem[i+1]; /* 與Elemtype 相關*/return OK;}}return FALSE; }Status ListInsert(SqList *L, int i, ElemType e)//向線性表中插入元素 {ElemType *newbase;if(i < 1 || i > L->length+1) return ERROR;if(L->length >= L->listsize){newbase = (ElemType *)realloc(L->elem, (L->listsize + LISTINCREMENT)*sizeof(ElemType));if(!newbase) exit(OVERFLOW);L->elem = newbase;L->listsize += LISTINCREMENT;}ElemType *q = &(L->elem[i-1]);ElemType *p;for(p = &(L->elem[L->length-1]); p>=q; --p)*(p+1) = *p;*q = e;++L->length;return OK; }Status ListDelete(SqList *L, int i, ElemType e)//從線性表中刪除元素 {if(i<1 || i>L->length) return ERROR;ElemType *p = &(L->elem[i-1]);e = *p;ElemType *t = &(L->elem[L->length-1]);for(++p; p <= t; ++p) *(p-1) = *p;--L->length;return OK; }Status ListTraverse(SqList *L, int (* visit)(void *)) {int i;for (i = 0; i < L->length; i++)//如果失敗if (!visit((int *)L->elem[i]))/* 與Elemtype 相關*/return ERROR;return TRUE; }Status ListPrint(SqList *L) {int i;if (!L->elem || L->length < 1 || L->length > L->listsize){printf("empty!\n");return ERROR;}for (i = 0; i < L->length; i++) {printf("%5d ", L->elem[i]);}printf("\n");return TRUE; } 測試代碼:

int main() {int i,n;SqList a;SqList *l = &a;if(InitList(l)==-2) printf("分配失敗");printf("\n輸入要建立的線性表l的長度n:");//輸入線性表得長度scanf("%d",&n);l->length=n;printf("線性表的長度是:%d\n",l->length);CreatList_Sq(l,n);//生成線性表puts("原序:");//輸出線性表中的元素ListPrint(l);puts("");int ce, pe;printf("請輸入要查找前驅的元素:");scanf("%d", &ce);PriorElem(l, ce, &pe);printf("%d的前驅是%d\n", ce, pe);NextElem(l, ce, &pe);printf("%d的后繼是%d\n", ce, pe); printf("請輸入要插入的元素和插入位置:");scanf("%d%d", &ce,&pe);ListInsert(l, pe,ce);printf("插入元素%d后的線性表為\n", ce);ListPrint(l);printf("請輸入要刪除元素位置:");scanf("%d", &ce);ListDelete(l, ce, pe);printf("刪除%d位置的<span style="font-family: Arial, Helvetica, sans-serif;">元素</span><span style="font-family: Arial, Helvetica, sans-serif;">后的線性表為\n", ce);</span> ListPrint(l);DestroyList(l);//銷毀順序表 return 0; }
運行結果:



總結

以上是生活随笔為你收集整理的数据结构(严蔚敏)之一——顺序表之c语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲国产视频一区二区 | 夜夜夜综合 | 男人的天堂在线观看av | 久久99精品国产麻豆婷婷 | 中文字幕超清在线免费观看 | 91视频污在线观看 | 视频福利在线 | 久久午夜福利电影 | 视频一区 中文字幕 | 秋霞在线视频 | 95国产精品 | 国产精品久久久影院 | 五月天综合色 | 六月丁香激情网 | 精品国产大片大片大片 | 蜜桃成人在线观看 | 午夜成人影片 | 91黑丝视频| a级黄色片网站 | 久久成人在线视频 | 国产情侣小视频 | 国产黄色免费视频 | 动漫裸体无遮挡 | 大胸美女被爆操 | 欧产日产国产精品 | 人妻丰满熟妇av无码区免 | 欧美精品一二三 | 一色屋免费视频 | 丝袜黄色片 | www,99| 国产精品久久久免费观看 | 婷婷中文| 日韩女优在线 | 中文字幕人妻精品一区 | 免费黄色91| 三级网站免费观看 | 国产香蕉一区二区三区 | 欧美tickle狂笑裸体vk | 青青草老司机 | gai视频在线观看资源 | 红杏出墙记 | 日韩成人在线网站 | 亚洲精品成av人片天堂无码 | 午夜久久久久久久久久 | 超碰av在线免费观看 | 天天色天天射天天操 | 一本色道久久综合精品婷婷 | 国产精品热久久 | 国产精品成人免费视频 | 日本少妇ⅹxxxxx视频 | 自拍视频在线观看 | 国产精品久久久网站 | 精品国产av 无码一区二区三区 | 国产久操视频 | 国产剧情自拍 | 俺去日| 古装做爰无遮挡三级 | 香蕉视频网址 | 久久综合久久综合久久综合 | 一本久久精品一区二区 | 免费观看的毛片 | 日本三级韩国三级三级a级按摩 | 天天干天天拍 | 美女扒开尿口给男人看 | 无码精品国产一区二区三区免费 | 香蕉狠狠爱视频 | 久久精品123 | 好色先生视频污 | 天天碰天天干 | 黄色大片免费网站 | 精品久久久久久久久中文字幕 | 免费观看亚洲 | 成人精品一区日本无码网 | 手机av在线不卡 | 爱的色放3 | 美女久久| 在线免费你懂的 | 色哟哟一区二区三区四区 | a√天堂在线| 成人亚洲电影 | 性囗交免费视频观看 | 自拍偷拍在线视频 | av黄色在线播放 | 中文字幕 人妻熟女 | 中国黄色片子 | 精品在线免费观看视频 | a天堂亚洲 | 中文字幕精品视频在线 | 老熟妇仑乱视频一区二区 | 啪啪小视频 | 狠狠干天天爱 | 老湿机69福利 | 小宵虎南在线观看 | 环太平洋3:泰坦崛起 | 亚州av在线 | 久久精品欧美一区二区三区麻豆 | 岛国精品在线观看 | 捆绑凌虐一区二区三区 | 黄色第一网站 |