本节主要针对删除和移动链表数据。
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; }