#include
#include
#include
using namespace std;
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*linkList;
//头插
int List_HeadInsert(linkList &L)
{
LNode *s;int x;
L=(linkList)malloc(sizeof(LNode));
L->next=NULL;
scanf("%d",&x);
while(x!=4444)//输入4444表示退出输入
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
s->next=L->next;
L->next=s;
scanf("%d",&x);
}
}
//尾插
int List_TailInsert(linkList &L)
{
LNode *s;int x;
L=(linkList)malloc(sizeof(LNode));//此处L为尾指针
scanf("%d",&x);
while(x!=4444)
{
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
L->next=s;//此处直接给s
L=s;
scanf("%d",&x);
}
return L->data;
}
//显示打出
int show_list(linkList L)
{
LNode *p=L->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("n");
}
//删除 以头插为创建方式
void Destroy_List(linkList &L)
{
LNode *s;
s=(LNode *)malloc(sizeof(LNode));
while(L->next!=NULL)
{
s=L->next;
L=s->next;
free(s);
}
}
//输入序号查找
int Get_listElem(linkList &L,int x)
{
int i=1;
LNode *p=L->next;
if(x==0)
return L->data;
if(x<1)
return NULL;
while(p&&inext;
i++;
}
return p->data;
}
//输入值查找
int Get_listNum(linkList L,int x)
{
LNode *p=L->next;
int i=0;
while(p)
{
i++;
if(p->data==x)
return i;
p=p->next;
}
}
//插入节点
int Sert_listNode(linkList L,int i,int x)
{
LNode *p=L->next;
LNode *q;
q=(linkList)malloc(sizeof(LNode));
int j;
for(j=1;jnext;
}
q->data=x;
q->next=p->next;
p->next=q;
}
//删除第i个节点
int Delete_listNode(linkList L,int i)
{
LNode *p=L->next;LNode *q;
q=(linkList)malloc(sizeof(LNode));
for(int j=1;jnext;
}
q=p->next;
p->next=q->next;
free(q);
}
//删除所有值为x的节点
int Delete_listNodes(linkList L,int i)
{
LNode *p=L;LNode *q;
q=(linkList)malloc(sizeof(LNode));
q=p->next;
while(q!=NULL)
{
if(q->data==i)
{
p->next=q->next;
free(q);
q=p->next;
}
else{
p=q;
q=q->next;
}
}
}
//删除重复值节点
int Delete_listNodemod(linkList L)
{
LNode *p=L->next; LNode *q; LNode *ptr;
while(p!=NULL)
{
q=p,ptr=p->next;
while(ptr!=NULL)
{
if(ptr->data==p->data)
{
q->next=ptr->next;
free(ptr);
ptr=q->next;
}
else
{
q=ptr;
ptr=ptr->next;
}
}
p=p->next;
}
}
int main()
{
LNode *L;
List_HeadInsert(L);
show_list(L);
printf("%d n",Get_listElem(L,2));
printf("%d n",Get_listNum(L,1));
Sert_listNode(L,4,5);
show_list(L);
Delete_listNode(L,2);
show_list(L);
Delete_listNodes(L,5);
show_list(L);
Delete_listNodemod(L);
show_list(L);
cout << "Hello world!" << endl;
return 0;
}