链表的相关操作

 

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <cstdlib>
  4 
  5 using namespace std;
  6 
  7 struct node;
  8 typedef struct node *ptrtonode;
  9 typedef ptrtonode linkhead;
 10 typedef ptrtonode position;
 11 typedef int elementype;
 12 
 13 int Empty(linkhead L);
 14 int Islast(position p);
 15 void Print(linkhead L);
 16 position Find(elementype x,linkhead L);
 17 int Delete(elementype x,linkhead L);
 18 void Insert(elementype x,position p,linkhead L);
 19 
 20 struct node{
 21     elementype element;
 22     position next;
 23 };
 24 
 25 int Empty(linkhead L){
 26     return L->next==NULL;
 27 }
 28 
 29 int Islast(position p){
 30     return p->next==NULL;
 31 }
 32 
 33 void Print(linkhead L){
 34     position p=L->next;
 35     while(p->next!=NULL){
 36         printf("%d ",p->element);
 37         p=p->next;
 38     }
 39     printf("\n");
 40 }
 41 
 42 position Find(elementype x,linkhead L){ //返回元素上一个位置的指针
 43     int a=1;
 44     position p=L;
 45     while(p->next!=NULL&&p->next->element!=x){
 46         p=p->next;
 47         a++;
 48     }
 49     if(p->next!=NULL){
 50         return p;
 51     }else{
 52         return NULL;
 53     }
 54 }
 55 
 56 void Insert(elementype x,position p,linkhead L){
 57     position pp;
 58     pp=(position)malloc(sizeof(struct node));
 59     pp->element=x;
 60     pp->next=p->next;
 61     p->next=pp;
 62 }
 63 
 64 int Delete(elementype x,linkhead L){ //返回0,查找失败,无此元素。返回1,删除成功。
 65     position p1,p2;
 66     p1=Find(x,L);
 67     if(p1==NULL){
 68         return 0;
 69     }
 70     p2=p1->next;
 71     p1->next=p2->next;
 72     free(p2);
 73     return 1;
 74 }
 75 
 76 int main()
 77 {
 78     int a;
 79     int f;
 80     position head;
 81     head=(position)malloc(sizeof(struct node));
 82     position last;
 83     last=(position)malloc(sizeof(struct node));
 84     head->next=last;
 85     last->next=NULL;
 86 
 87     printf("请输入要插入的元素(整型,以0结束。):\n");
 88     while(scanf("%d",&a)!=EOF&&a!=0){
 89         Insert(a,head,head);
 90     }
 91     printf("元素分别为:\n   ");
 92     Print(head);
 93 
 94     printf("请输入要查找的元素:");
 95     scanf("%d",&f);
 96     position p=Find(f,head);
 97     if(p->next->element==f){
 98         printf("查找成功!\n");
 99     }else{
100         printf("查找失败。\n");
101     }
102 
103     printf("请输入要删除的元素:");
104     scanf("%d",&f);
105     if(Delete(f,head)==1){
106         printf("已删除。\n");
107     }else{
108         printf("删除失败。");
109     }
110 
111 
112 
113 
114     return 0;
115 }

 

 

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-27 10:28
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
10-17 10:05
已编辑
北华大学 全栈开发
牛客872465272号:掉头发了哥
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务