04. 向量瓦片地圖線化簡演算法研究
阿新 • • 發佈:2022-03-13
#include <stdio.h> #define ElemType int //typedef int ElemType int main(int argc, char **argv) { printf("Hello, World!\n"); //單鏈表的定義 typedef struct LNode{ ElemType data; struct LNode *next }LNode,*LinkList; //不帶頭結點的單鏈表 //初始化一個空的單鏈表 bool InitList(LinkList &L) { L=NULL; //空表,暫時還沒有任何結點 return true; } void test() { LinkList L; //宣告一個指向單鏈表的指標 InitList(L);//初始化一個空表 //後續程式碼······ } //判斷單鏈表是否為空 bool Empty(LinkList L) { return (L==NULL); } //帶頭結點的單鏈表 //初始化一個空的單鏈表 bool InitList(LinkList &L) { L=(LNode*)malloc(sizeof(LNode));//分配一個頭結點 if(L==NULL)return false; //記憶體不足,分配失敗 L->next=NULL; //頭結點之後是空的 return true; } void test() { LinkList L; //宣告一個指向單鏈表的指標 InitList(L);//初始化一個空表 //後續程式碼······ } //判斷單鏈表是否為空 bool Empty(LinkList L) { if(L->next==NULL)return true; else return false; } //大部分時候使用有頭結點的連結串列 //按位查詢,返回第i個元素(帶頭結點) LNode * GetElem(LinkList L,int i) { if(i<0)return NULL; LNode *p; //指標p指向當前掃描到的結點 int j=0; //當前p指向的是第幾個結點 p=L; //L指向頭結點,頭結點是第0個結點(不存資料) while(p!=NULL&&j<i) //迴圈找到第i個結點 { p=p->next; j++; } return p; } //按值查詢,找到資料域==e的結點 LNode * LocationElem(LinkList L,int e) { LNode *p=L->next; //從第一個結點開始查詢資料域為e的結點 while(p!=NULL&&p->data!=e) p=p->next; return p; //找到後返回該結點指標,否則返回NULL } //求表的長度 int Length(LinkList L) { int len=0; LNode *p=L; while(p->next!=NULL) { len++; p=p->next; } return len; } //前插操作:在P結點之前插入元素e bool InsertPriorNode(LNode *p,ElemType e) { if(p==NULL)return false; LNode *s=(LNode *)malloc(sizeof(LNode)); if(s=NULL) return false; //記憶體分配失敗 s->next=p->next; p->next=s; //新結點連線在p之後 s->data=p->data; //s結點變成p結點 p->date=e; //p資料域覆蓋為e,變成插入的結點 return true; } }