删除和移动链表数据
本节主要针对删除和移动链表数据。
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;
}
浙公网安备 33010602011771号