我是一只新晋程序狗

    我是一只新晋的程序狗,感觉对这个兴趣还不错,有一点点c的基础,正在学c++入门和matlab入门,感觉这两个好难呀,老师上课讲的好难跟上,但是我会努力的。

    从今天起,就开始写这个博客,记录每一天的心路历程,希望有一天能成为编程大神。

今日总结:

    今天我主要做了c语言的一个数据结构练习,这个程序是错的,不过不要紧,我一步步调试就好。还做了一个关于matlab的优化算法的小练习,有点小难,发现函数很多,函数的参数也很多,help完全是英文的看不懂,急急急。至于c++,一脸萌币。。。。。。打算这星期学会一些简单的消息处理,完成老师布的一个小习题。

   贴点代码

   这个是按升序合并两个链表的代码,有很多不足,目前最大问题就是参数传递理解的不透彻,对于引用不理解,希望明天就能解决

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"

typedef struct TagLNode{
	int data;
	struct TagLNode* next;
}LNode;

<span style="color:#33cc00;">/*在如上结构体中,TagLNode与LNode是否完全
没有区别?..............................
答案是否,就我目前理解看来,TagLNode,比
LNode要更“正式”一点,至少结构体中若要
再定义一个类型变量,当用TagLNode*/

</span>
LNode CreateNode()
{
	<span style="color:#33cc00;">//创建单向链表
</span>	LNode *p = NULL;
	LNode *q = NULL;
	LNode *pHead = NULL;

	p = (LNode*)malloc(sizeof(LNode));
	scanf("%d",&p->data);
	p->next = NULL;
	//LNode* pHead = p<span style="color:#33cc00;"><span style="color:#000000;">;</span>//建立头节点
</span>
	
	do
	{
		q = (LNode*)malloc(sizeof(LNode));
		q->next = NULL;
		scanf("%d",&q->data);
		p->next = q;
		p = q;
	}while(q->data!= -1);//此处是个死循环
	return pHead;
}

void DestroyNode(LNode *pHead)
{
	//销毁链表
	LNode* Clean;
	LNode* p;
	LNode* q;

	while(pHead->next != NULL)
	{
		Clean = pHead;
		pHead = pHead->next;
		free(Clean);

	}
	free(pHead);
	pHead = NULL;
	p = NULL;
	q = NULL;
	Clean = NULL;/*定义指针变量后,都赋为空
				 在程序结束后将所有指针型变量都释放,
				 养成良好习惯可以避免野指针出现*/
}

int _tmain(int argc, _TCHAR* argv[])
{
	
	LNode *aHead = NULL;
	LNode *bHead = NULL;
	LNode *cHead = NULL;
	LNode *c = NULL;

	aHead = CreateNode();
	bHead = CreateNode();

	//先创建两个顺序数列
	//合并到n里
	if (aHead->data < bHead->data)
	{
		cHead = aHead;
		c = cHead;
		aHead = aHead->next;

	}
	else
	{
		cHead = bHead;
		c = bHead;
		bHead = bHead->next;
	}

	while( (aHead->next!=NULL) || (bHead->next!=NULL) )
	{
		if(aHead->data<=bHead->data)
		{
			c->next = aHead;
			aHead = aHead->next;
			c = c->next;
		}
		else
		{
			c->next = bHead;
			bHead = bHead->next;
			c = c->next;
		}
	}

	DestroyNode(aHead);
	DestroyNode(bHead);
	DestroyNode(cHead);
	
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值