线性表

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;

以上是关于线性表的主要内容,如果未能解决你的问题,请参考以下文章

线性表—顺序表

线性表的概念与实现

线性表

数据结构-线性表

数据结构-线性表

线性表