#include <iostream> #include <stdlib.h> #include <stdio.h> 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&&i<x) { p=p->next; 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;j<i-1;j++) { p=p->next; } 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;j<i-1;j++) { p=p->next; } 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; }