数据结构 Day2

/**
* Name:test_1.h
* Description:数据结构学习程序1
*			  https://www.bilibili.com/video/av18586085?p=1
*			  链表的学习代码,从P11到P13 的练习代码
* Author:JianshuZhao
* Version:V1.0.0
* Date:2020.2.16
*/

线性表及其实现

1.1 顺序存储结构直接表示
在这里插入图片描述
1.2 顺序存储结构表示非零项
结构数据表示(ai, i),以指数递加的过程排序
1.3 链表结构存储非零项
在这里插入图片描述
在此处因为对之前链表的内容早已经忘得一干二净,手边没有C primer plus,因此以谭浩强的书作为链表的知识回顾。
最终实现代码如下,并能够做到充分理解。

/**
* Name:test_1.h
* Description:数据结构学习程序1
*			  https://www.bilibili.com/video/av18586085?p=1
*			  链表的学习代码,从P11到P10 的练习代码
* Author:JianshuZhao
* Version:V1.0.0
* Date:2020.2.16
*/

#include "test_2.h"

int n = 0;

 PolyNode_t * CreatDynamicLink()
 {
	 PolyNode_t *head;
	 PolyNode_t *p1, *p2;

	 p1 = p2 = (PolyNode_t *)malloc(sizeof(PolyNode_t));
	 scanf("%d %d", &p1->coef, &p1->expon);
	 head = NULL;
	 while (p1->coef != 0)
	 {
		 n = n + 1;
		 if (n == 1)
		 {
			 head = p1;
		 }
		 else
		 {	
			 p2->link = p1;
		 }
		 p2 = p1;
		 p1 = (PolyNode_t *)malloc(sizeof(PolyNode_t));
		 scanf("%d %d", &p1->coef, &p1->expon);
	 }
	 p2->link = NULL;
	 return head;
 }

 void CreatStaticLink()
 {
	 PolyNode_t Poly1, Poly2, Poly3, *head, *p;
	 Poly1.coef = 1;
	 Poly1.expon = 0xAA;
	 Poly2.coef = 2;
	 Poly2.expon = 0xBB;
	 Poly3.coef = 3;
	 Poly3.expon = 0xCC;
	 head = (PolyNode_t *)&Poly1;
	 Poly1.link = (PolyNode_t *)&Poly2;
	 Poly2.link = (PolyNode_t *)&Poly3;
	 Poly3.link = NULL;

	 p = head;

	 do
	 {
		 printf("%d   %d\n", p->coef, p->expon);
		 p = p->link;
	 } while (p != NULL);
	 getchar();
 }

 void PrintLink(PolyNode_t *head)
 {
	 PolyNode_t *pTemp;
	 if (head != NULL)
	 {
		 printf("There are %d members in the Link", n);
		 pTemp = head;
		 do
		 {
		 	 printf("\n\nnum:%d, \nscore:%d\n", pTemp->coef, pTemp->expon);
			 pTemp = pTemp->link;
		 }while(pTemp != NULL);
		 system("pause");
	 }
 }

2.1 线性表的定义
在这里插入图片描述
其定义如下:

typedef struct{
	int Data[MAXSIZE];
int Last;
}LNode_t;
typedef LNode_t*	List_t;


extern LNode_t L;
extern List_t PtrL;

常用的操作类型有如下图所示
在这里插入图片描述

//初始化一个空线性表
 List_t MakeEmpty()
 {
	 List_t PtrL;
	 PtrL = (List_t)malloc(sizeof(LNode_t));
	 PtrL->Last = -1;
	 return PtrL;
 }
 
//在线性表Ptrl中查找x第一次出现的位置
 int Find(int x, List_t Ptrl)
 {
	 int i = 0;
	 while ((i <= PtrL->Last) && Ptrl->Data[i] != x)
	 {
		 i++;
	 }
	 return (i > PtrL->Last) ? -1 : i;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值