日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

表之顺序结构和链式结构

發(fā)布時(shí)間:2025/3/20 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 表之顺序结构和链式结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#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;//找到存儲(chǔ)位置 } //插入(第i個(gè)1<i<n+1)位置插入一個(gè)值為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個(gè)位置上的數(shù)據(jù) void Delete(int i, List PtrL) {int j;if (i < 1 || i >PtrL->Last + 1){printf("不存在第%d個(gè)元素");return;}for (j = i; j <= PtrL->Last; j++)PtrL->Data[j - 1] = PtrL->Data[j];PtrL->Last--;return; }///************************************************************************ //線性表的鏈?zhǔn)酱鎯?chǔ)結(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; }//按序號(hào)查找 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個(gè)節(jié)點(diǎn)的后面 void Insert(ElementType X, int i, List PtrL) {List p, s;if (i == 1){s = (List)malloc(sizeof(struct LNode));//申請(qǐng)裝填節(jié)點(diǎn)s->Data = X;s->Next = PtrL;return s; //返回表頭指針}p = FindKth(i - 1, PtrL);//查找第i-1個(gè)節(jié)點(diǎn)if (p == NULL){printf("參數(shù)i出錯(cuò)");return NULL;}else{s = (List)malloc(sizeof(struct LNode));s->Data = X;s->Next = p->Next;p->Next = s;return PtrL;} } //刪除鏈表的第i個(gè)位置上的節(jié)點(diǎn) //先找到鏈表的第i-1個(gè)結(jié)點(diǎn) //再用指針s指向要被刪除的節(jié)點(diǎn)(p的下一個(gè)節(jié)點(diǎn)) //然后修改指針,刪除s所指向的結(jié)點(diǎn) //最后釋放s所指向的空間 List Delete(int i, List PtrL) {List p, s;if (i == 1)//要?jiǎng)h除的是表的第一個(gè)結(jié)點(diǎn){s = PtrL; //s指向第1個(gè)結(jié)點(diǎn)if (PtrL != NULL)PtrL = PtrL->Next;//從表中刪除else return NULL;free(s); //釋放空間return PtrL;}p = FindKth(i - 1, PtrL);//查找第i-1個(gè)結(jié)點(diǎn)if (p == = NULL){printf("第%d個(gè)結(jié)點(diǎn)不存在",i - 1); return NULL;}else if (p->Next == NULL){printf("第%d個(gè)結(jié)點(diǎn)不存在", i);return NULL;}else{s = p->Next;//s指向第i個(gè)結(jié)點(diǎn)p->Next = s->Next;//從鏈表中刪除free(s);retur PtrL;}}

總結(jié)

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

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