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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

表之顺序结构和链式结构

發(fā)布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表之顺序结构和链式结构 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include "stdafx.h" #include<stdlib.h>#define ElementType int #define MAXSIZE 10typedef struct LNode *List; struct LNode {ElementType Data[MAXSIZE];int Last; };//初始化 List MakeEmpty() {List PtrL;PtrL = (List)malloc(sizeof(struct LNode));PtrL->Last = -1;return PtrL; }//查找 int Find(ElementType X, List PtrL) {int i = 0;while (i <= PtrL->Last && PtrL->Data[i] != X)i++;if (i > PtrL->Last)return -1;//如果沒有找到,返回-1else return i;//找到存儲位置 } //插入(第i個1<i<n+1)位置插入一個值為x的新元素 void Insert(ElementType X, int i, List PtrL) {int j;if (PtrL->Last == MAXSIZE - 1) {printf("表滿\n");return;}//檢查插入位置的合法性if (i <1 || i> PtrL->Last + 2){printf("位置不合法");return;}for (j = PtrL->Last; j >= i - 1; j--)PtrL->Data[j + 1] = PtrL->Data[j];PtrL->Data[i - 1] = X;PtrL->Last++;//Last仍是指向最后的元素return; } //刪除第i個位置上的數(shù)據(jù) void Delete(int i, List PtrL) {int j;if (i < 1 || i >PtrL->Last + 1){printf("不存在第%d個元素");return;}for (j = i; j <= PtrL->Last; j++)PtrL->Data[j - 1] = PtrL->Data[j];PtrL->Last--;return; }///************************************************************************ //線性表的鏈式存儲結(jié)構(gòu) typedef struct LNode *List; struct LNode {ElementType Data;List Next; }; struct LNode L; List PtrL;//求表長 int Length(List PtrL) {List p = PtrL;int j = 0;while (p) {p = p->Next;j++;}return j; }//按序號查找 List FindKth(int k, List PtrL) {List p = PtrL;int i = 1;while (p != NULL && i < k){p = P->Next;i++;}if (i == k)return p;elsereturn NULL; } //按值查找 List Find(ElementType X, List PtrL) {List p = PtrL;while (p != NULL && p->Data != X)p = p->Next;rerturn p; }//插入,插入在第i-1個節(jié)點的后面 void Insert(ElementType X, int i, List PtrL) {List p, s;if (i == 1){s = (List)malloc(sizeof(struct LNode));//申請裝填節(jié)點s->Data = X;s->Next = PtrL;return s; //返回表頭指針}p = FindKth(i - 1, PtrL);//查找第i-1個節(jié)點if (p == NULL){printf("參數(shù)i出錯");return NULL;}else{s = (List)malloc(sizeof(struct LNode));s->Data = X;s->Next = p->Next;p->Next = s;return PtrL;} } //刪除鏈表的第i個位置上的節(jié)點 //先找到鏈表的第i-1個結(jié)點 //再用指針s指向要被刪除的節(jié)點(p的下一個節(jié)點) //然后修改指針,刪除s所指向的結(jié)點 //最后釋放s所指向的空間 List Delete(int i, List PtrL) {List p, s;if (i == 1)//要刪除的是表的第一個結(jié)點{s = PtrL; //s指向第1個結(jié)點if (PtrL != NULL)PtrL = PtrL->Next;//從表中刪除else return NULL;free(s); //釋放空間return PtrL;}p = FindKth(i - 1, PtrL);//查找第i-1個結(jié)點if (p == = NULL){printf("第%d個結(jié)點不存在",i - 1); return NULL;}else if (p->Next == NULL){printf("第%d個結(jié)點不存在", i);return NULL;}else{s = p->Next;//s指向第i個結(jié)點p->Next = s->Next;//從鏈表中刪除free(s);retur PtrL;}}

總結(jié)

以上是生活随笔為你收集整理的表之顺序结构和链式结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。