线性表
Posted kirosola
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线性表相关的知识,希望对你有一定的参考价值。
数据组织
typedef int ElemType;
typedef struct Node1 ElemType data[MaxCol]; struct Node1* next; DList;
typedef struct Node2 int Row, Col; DList* next; HList;
尾插法
void CreateTable(HList*& h) DList* r, * s; h = (HList*)malloc(sizeof(HList)); h->next = NULL; printf("表的行数列数:"); scanf("%d%d", &h->Row, &h->Col); for (int i = 0; i < h->Row; i++) printf("第%d行", i + 1); s = (DList*)malloc(sizeof(DList)); for (int j = 0; j < h->Col; j++) scanf("%d", &s->data[j]); if (h->next == NULL) h->next = s; r = s; if(h->next != NULL) r->next = s; r = s; r->next = NULL;
销毁
void DistroyTable(HList*& h) DList* pre = h->next; DList* p = pre->next; while (p != NULL) free(pre); pre = p; p = pre->next; free(pre); free(h);
输出
void DispTable(HList* h) DList* p = h->next; while (p != NULL) for (int i = 0; i < h->Col; i++) printf("%5d", p->data[i]); printf("\n"); p = p->next;
表连接运算
void LinkTable(HList* h1, HList* h2, HList*& h) int i, j; DList* p = h1->next; DList* q, * s, * r; h = (HList*)malloc(sizeof(HList)); h->next = NULL; h->Row = 0; h->Col = h1->Col + h2->Col; printf("连接的字段是:第一个表序号,第二个表序号\n"); scanf("%d%d", &i, &j); while (p != NULL) q = h2->next; while (q != NULL) if (p->data[i-1] == q->data[j-1]) s = (DList*)malloc(sizeof(DList)); for (int k = 0; k < h1->Col; k++) s->data[k] = p->data[k]; for (int k = 0; k < h2->Col; k++) s->data[k + h1->Col] = q->data[k]; if (h->next == NULL) h->next = s; else r->next = s; r = s; h->Row++; q = q->next; p = p->next; r->next = NULL;
以上是关于线性表的主要内容,如果未能解决你的问题,请参考以下文章