单链表及系列操作

来源:互联网 发布:淘宝网已买到的宝贝 编辑:程序博客网 时间:2024/05/16 10:51
单链表
#include <iostream>#include <cstdlib>using namespace std;typedef struct Node{   int data;   struct Node *next;}Node, *LinkList;void input1(LinkList *head){   LinkList p,r;   int x;   cin>>x;   *head=(LinkList)malloc(sizeof(Node));   r=*head;   while(x!=-1)   {      p=(Node *)malloc(sizeof(Node));      p->data=x;      r->next=p;      r=p;      cin>>x;   }   r->next=NULL;}void input2(LinkList *head){   LinkList p;   *head=(LinkList)malloc(sizeof(Node));   (*head)->next=NULL;   int x;   cin>>x;   while(x!=-1)   {      p=(LinkList)malloc(sizeof(Node));      p->data=x;      p->next=(*head)->next;      (*head)->next=p;      cin>>x;   }}void print(LinkList head){   LinkList p;   p=head;   int cnt=1;   while(p->next!=NULL)   {      cout  << p->next->data << ' ';      if(cnt%5==0)         cout << endl;      p=p->next;      cnt++;   }   cout << endl;}void printsum(LinkList head){   LinkList p;   p=head;   int sum=0;   while(p->next!=NULL)   {      sum+=p->next->data;      p=p->next;   }   cout << sum << endl;}int find(LinkList head,int pos){   LinkList p;   p=head->next;   int j=1;   while(p!=NULL&&j<pos)   {      p=p->next;      j++;   }   return p->data;}void inser(LinkList *head,int pos,int e){   LinkList p,s;   int j=1;   p=*head;   while(p&&j<pos)   {      p=p->next;      j++;   }   s=(LinkList)malloc(sizeof(Node));   s->data=e;   s->next=p->next;   p->next=s;}void dele(LinkList *head,int pos){   LinkList p,q;   int j=1;   p=*head;   while(p->next!=NULL&&j<pos)   {      p=p->next;      j++;   }   q=p->next;   p->next=q->next;   free(q);}void clearr(LinkList *head){   LinkList p,q;   p=(*head)->next;   while(p)   {      q=p->next;      free(p);      p=q;   }   (*head)->next=NULL;}int main(){    LinkList head=NULL;    input1(&head);    print(head);    printsum(head);    cout << find(head,2) << endl;    inser(&head,1,10);    print(head);    dele(&head,1);    print(head);    return 0;}

#include <iostream>#include <cstdlib>using namespace std;typedef struct Node{   int data;   struct Node *next;}Node;Node *initLinkList(){   Node *head;   head=(Node *)malloc(sizeof(Node));   head->next=NULL;   return head;}void CreatLinkList(Node *head){   Node *p,*r;   int x;   cin>>x;   r=head;   while(x!=-1)   {      p=(Node *)malloc(sizeof(Node));      p->data=x;      p->next=NULL;      r->next=p;      r=p;      cin>>x;   }}void printLinkList(Node *head){   Node *p;   p=head->next;   while(p!=NULL)   {      cout << p->data << ' ';      p=p->next;   }   cout << endl;}void insertLinkList(Node *head,int x){   Node *pre,*r,*q;   q=(Node *)malloc(sizeof(Node));   q->data=x;   q->next=NULL;   pre=head;   r=head->next;   while(r->data<x&&r!=NULL)   {      pre=r;      r=r->next;   }   pre->next=q;   q->next=r;}void deleteLinkList(Node *head){   Node *p,*q;   p=head->next;   while(p!=NULL)   {      q=p;      p=p->next;      free(q);   }   head->next=NULL;}Node *findLinkList(Node *head,int x){   Node *p;   p=head->next;   while(p!=NULL)   {      if(p->data==x)         return p;      p=p->next;   }   return NULL;}int main(){    Node h; h.next=NULL;    //Node *h;h=initLinkList();    CreatLinkList(&h);    insertLinkList(&h,6);    //deleteLinkList(&h);    printLinkList(&h);    return 0;}
#include<cstdio>
#include<cstdlib>#include<iostream>using namespace std;typedef struct Node{   int data;   struct Node *next;}Node;void creatLinkList(Node *h){   Node *p,*r;   int x;   cin>>x;   r=h;   while(x!=-1)   {      p=(Node *)malloc(sizeof(Node));      p->data=x;      p->next=NULL;      r->next=p;      r=r->next;      cin>>x;   }}void printLinkList(Node *h){   Node *p;   p=h->next;   while(p!=NULL)   {      cout << p->data << ' ';      p=p->next;   }   cout << endl;}void deletesdata(Node *h,int x)//删除某一元素{   Node *p,*pre,*c;   pre=h;   p=h->next;   while(p!=NULL)   {      if(p->data==x)      {         c=p;         pre->next=p->next;         p=p->next;         free(c);      }      else      {         pre=p;         p=p->next;      }   }}void deleteparddata(Node *h)//删除重复元素{   Node *p;   p=h->next;   while(p!=NULL)   {      deletesdata(p,p->data);      p=p->next;   }}void ten_to_eight(Node *h,int n)//十进制转八进制{   Node *p,*r;   r=h;   while(n!=0)   {      int t;      t=n%8;      p=(Node *)malloc(sizeof(Node));      p->data=t;      p->next=NULL;      p->next=r->next;      r->next=p;      n/=8;   }}void mergedata(Node *h1,Node *h2,Node *h3)//链表的合并{   Node *a,*b,*c,*p,*r;   a=h1->next;   b=h2->next;   r=h3;   while(a!=NULL)   {      r->next=a;      r=r->next;      a=a->next;   }   while(b!=NULL)   {      int flag=0;      p=h3->next;      while(p!=NULL)      {         if(b->data==p->data)         {            flag=1;            break;         }         p=p->next;      }      if(flag==0)      {         b->next=NULL;         r->next=b;         r=r->next;      }      b=b->next;   }}int main(){   Node h;   h.next=NULL;   //int n;   //creatLinkList(&h);   //deleteparddata(&h);   //printLinkList(&h);   //cin>>n;   //ten_to_eight(&h,n);   /*Node h1,h2,h3;   h1.next=NULL;   h2.next=NULL;   h3.next=NULL;   creatLinkList(&h1);   creatLinkList(&h2);   mergedata(&h1,&h2,&h3);*/   creatLinkList(&h);   printLinkList(&h);   return 0;}




原创粉丝点击