删除和移动链表数据

本节主要针对删除和移动链表数据。

7)【删除】删除带头结点的链表的最小值。

#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct node
{
	int data;
	struct node *next;
}Listnode,*LinkList;
int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
void deletemin(LinkList &La)
{
	LinkList p=La->next;//p为工作指针
	LinkList pre=La;
	LinkList q=p;//假设是头结点最小
	while(p->next)
	{
		if(q->data>p->next->data)//注意是next
		{
			q=p->next;
			pre=p;
		}
	}
	pre->next=q->next;
	free(q);
}

 8)【判断中心对称】带头结点h的链表,data和next域,data域字符型,判断前n个字符是否中心对称。如xyx,xyyx。

#include "stdafx.h"
#include<iostream>
using namespace std;
typedef struct node
{
	int data;
	struct node *next;
}Listnode,*LinkList;
int _tmain(int argc, _TCHAR* argv[])
{
	return 0;
}
bool dc(LinkList h,int n)
{
	LinkList p=h->next;//p为工作指针
	char s[100];
	int i;
	for(i=1;i<n/2;i++)
	{
		s[i]=p->data;p=p->next;//前1/2字符入栈
	}
	i--;
	if(n%2==1)p=p->next;//n为基数不需要比较中心元素
	while(p&&s[i]==p->data)
	{
		i--;
		p=p->next;
	}
	if(p)return true;
	else return false;
}

 

 

 

posted @ 2012-07-31 22:26  代码改变未来  阅读(253)  评论(0编辑  收藏  举报