单链表的建立

    xiaoxiao2021-03-25  129

    #include <stdio.h> #include <stdlib.h> struct node { int data; struct node *next; }; typedef struct node LNode, *LinkList; void CreateList(LinkList head); void PrintList(LinkList head); void ListDelete(LinkList head, int i, int *e); void ListInsert(LinkList head, int i, int e); int main() { LinkList head; int i, e, select; head = (LinkList) malloc (sizeof(LNode)); head -> next = NULL; while(1) { printf("1: Create a list.\n"); printf("2: Insert some elements in the list.\n"); printf("3: Delete some elements.\n"); printf("4: Print the list.\n"); printf("0: Quit!\n"); scanf("%d", &select); switch(select) { case 1: CreateList(head); break; case 2: printf("Input position and name of the element.\n"); scanf("%d%d", &i, &e); ListInsert(head, i, e); break; case 3: printf("Input the position of the element.\n"); scanf("%d", &i); ListDelete(head, i, &e); case 4: PrintList(head); printf("\n"); break; case 0: exit(0); } } return 0; } //void CreateList()//头插法 //{ // LinkList p; // int num; // // while(scanf("%d", &num), num!=-1) // { // p = (LinkList)malloc(sizeof(LNode)); // p ->data = num; // p ->next = head ->next; // head ->next = p; // } //} void CreateList(LinkList head)//尾插法 { LinkList p, rear = head; int num; while(scanf("%d", &num), num!=-1) { p = (LinkList)malloc(sizeof(LNode)); p ->data = num; rear ->next = p; rear = p; } rear ->next = NULL; } void PrintList(LinkList head) { LinkList p = head ->next; while(p) { printf("%d\n", p ->data); p = p ->next; } } void ListInsert(LinkList head, int i, int e)//变相的头插法 { LinkList p, pre = head; int j = 0; while(pre && j<i+1) { pre = pre ->next; j++; } if(!pre || i<1) { printf("Input i error\n"); return; } p = (LinkList)malloc(sizeof(LNode)); p ->data = e; p ->next = pre->next; pre ->next = p; } void ListDelete(LinkList head, int i, int *e) { LinkList p, pre; int j=0; while(pre && j<i-1) { pre = pre ->next; j++; } if(!pre || i<1) { printf("Input i error\n"); return; } p = pre ->next; pre ->next = p ->next; *e = p->data; free(p); } ReCclay 认证博客专家 嵌入式软件开发 机器/深度学习 全栈技术学习者 大家好,我是博主ReCclay,目前处于研究生阶段,就读于电子科技大学,主攻方向为汽车辅助驾驶算法研究。入站以来,凭借坚持与热爱,以博文的方式分享所学,截止目前累计博文数量达800余篇,累计受益人次达130w+次,涉及领域包括但不限于物联网开发、单片机开发、Linux驱动开发、FPGA开发、前/后端软件开发等。在未来我将继续专注于嵌入式相关领域,学习更多的科技知识,输出更高质量的博文。
    转载请注明原文地址: https://ju.6miu.com/read-8240.html

    最新回复(0)