数据结构---单链表的基础 *** 作

数据结构---单链表的基础 *** 作,第1张

  1. #define _CRT_SECURE_NO_WARNINGS

  2. #include

  3. #include

  4. typedef int Elemtype;

  5. typedef struct LNode {

  6.     Elemtype data;

  7.     struct LNode* next;

  8. }LNode,*LinkList;

  9. LinkList HeadLinkList(LinkList& L) {

  10.     L = (LNode*)malloc(sizeof(LNode));

  11.     LinkList s;

  12.     int x;

  13.     scanf("%d",&x);

  14.     while (x != 999) {

  15.         s = (LNode*)malloc(sizeof(LNode));

  16.         s->data = x;

  17.         s->next = L->next;

  18.         L->next = s;

  19.         scanf("%d", &x);

  20.     }

  21.     return L;

  22. }

  23. LinkList EndLinkList(LinkList& L) {

  24.     L = (LNode*)malloc(sizeof(LNode));

  25.     LinkList s,r=L;//R是表尾节点

  26.     int x;                                                                                                                                                                                                  

  27.     scanf("%d", &x);

  28.     while (x != 999) {

  29.     s = (LNode*)malloc(sizeof(LNode));

  30.     s->data = x;

  31.     r->next = s;

  32.     r = s;

  33.     scanf("%d", &x);

  34.     }

  35.     r->next = NULL;

  36.     return L;

  37. }

  38. LNode* GetELem(LinkList L,Elemtype i) {

  39.     LinkList p = L->next;

  40.     int  j = 1;

  41.     if (i == 0)

  42.         return L;

  43.     if (i < 1)

  44.         return NULL;

  45.     while (p && j < i)

  46.     {

  47.         p = p->next;

  48.         j++;

  49.     }

  50.     return p;

  51. }

  52. LinkList LocateElem(LinkList L, Elemtype e) {

  53.     LinkList p = L;

  54.     while (p!=NULL && p->data!= e) 

  55.         p = p->next;

  56.     return p;

  57. }

  58. LinkList DeleteList(LinkList& L, Elemtype i) {//根据序号删除指定节点

  59.     LinkList p = GetELem(L, i-1);

  60.     LinkList q = p->next;

  61.     //printf("%d\n", q->data);

  62.     p->next = q->next;

  63.     free(q);

  64.     return L;

  65. }

  66. LNode* InsertList(LinkList& L, Elemtype i) {

  67.     LinkList p = GetELem(L, i - 1);

  68.     LinkList s = (LNode*)malloc(sizeof(LNode));

  69.     Elemtype x;

  70.     printf("please input insert in:\n");

  71.     scanf("%d", &x);

  72.     s->data = x;

  73.     s->next = p->next;

  74.     p->next = s;

  75.     return  L;

  76. }

  77. void PrintList(LinkList L) {

  78.       L = L->next;

  79.     while (L != NULL) {

  80.         printf("%3d", L->data);

  81.         L = L->next;

  82.     }

  83.     printf("\n");

  84. }

  85. int main(){

  86.     LinkList L;

  87.     LinkList search;

  88.     LinkList locate;

  89.     LinkList del;

  90.     //printf("请输入节点:\n");

  91.     //HeadLinkList(L);

  92.     //printf("你所创建的头插单链表是:\n");

  93.     //PrintList(L);

  94.     printf("请输入节点:\n");

  95.     EndLinkList(L);

  96.     printf("你所创建的尾插单链表是:\n");

  97.     PrintList(L);

  98.     printf("输入需要查找的序号的值:\n");

  99.     Elemtype i;

  100.     scanf("%d", &i);

  101.     search = GetELem(L, i);

  102.     if (search != NULL) {

  103.         printf("success:\n");

  104.         printf("%d\n", search->data);

  105.     }

  106.     int e;

  107.     printf("please input locateElem:\n");

  108.     scanf("%d", &e);

  109.     locate = LocateElem(L, e);

  110.     if (locate != NULL) {

  111.         printf("sucess:\n");

  112.         printf("%d\n", locate->data);

  113.     }

  114.     Elemtype in;

  115.     printf("please input in:\n");

  116.     scanf("%d", &in);

  117.     LinkList insert;

  118.     insert = InsertList(L, in);

  119.     printf("new Linklist:\n");

  120.     PrintList(insert);

  121.     Elemtype d;

  122.     printf("please input delete:\n");

  123.     scanf("%d", &d);

  124.     del = DeleteList(L, d);

  125.     PrintList(del);

  126.     return 0;

  127.  }

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/676398.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-19
下一篇2022-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存