#include<stdio.h> #include<stdlib.h>

#define MAXSIZE 100 // 定义最大长度

typedef struct LNode // 定义链表结构体 { int data; struct LNode *next; } LNode, *LinkList;

// 初始化链表 void InitList(LinkList *L) { L = (LNode)malloc(sizeof(LNode)); (*L)->next = NULL; }

// 建表 void CreateLinkList(LinkList L) { LNode s; int x; printf("请输入数据(输入0结束):\n"); scanf("%d", &x); while(x != 0) { s = (LNode)malloc(sizeof(LNode)); s->data = x; s->next = L->next; L->next = s; scanf("%d", &x); } }

// 求表长 int LengthLinkList(LinkList L) { LNode *p = L->next; int j = 0; while(p != NULL) { p = p->next; j++; } return j; }

// 输出链表 void ShowLinkList(LinkList L) { LNode *p = L->next; while(p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); }

// 插入节点 int InsertLinkList(LinkList L, int i, int e) { LNode *p = L, s; int j = 0; while(p != NULL && j < i - 1) { p = p->next; j++; } if(p == NULL || j > i - 1) { printf("插入位置不合法!\n"); return 0; } s = (LNode)malloc(sizeof(LNode)); s->data = e; s->next = p->next; p->next = s; return 1; }

// 删除节点 int DeleteLinkList(LinkList L, int i) { LNode *p = L, *q; int j = 0; while(p->next != NULL && j < i - 1) { p = p->next; j++; } if(p->next == NULL || j > i - 1) { printf("删除位置不合法!\n"); return 0; } q = p->next; p->next = q->next; free(q); return 1; }

// 查找元素 int LocateLinkList(LinkList L, int e) { LNode *p = L->next; int i = 1; while(p != NULL && p->data != e) { p = p->next; i++; } if(p == NULL) { return 0; } else { return i; } }

int main() { LinkList L; InitList(&L); CreateLinkList(L); printf("链表中的数据为:"); ShowLinkList(L); printf("链表的长度为:%d\n", LengthLinkList(L)); int i, e; printf("请输入插入的位置和元素:\n"); scanf("%d %d", &i, &e); if(InsertLinkList(L, i, e)) { printf("插入成功!\n"); printf("链表中的数据为:"); ShowLinkList(L); } printf("请输入删除的位置:\n"); scanf("%d", &i); if(DeleteLinkList(L, i)) { printf("删除成功!\n"); printf("链表中的数据为:"); ShowLinkList(L); } printf("请输入查找的元素:\n"); scanf("%d", &e); i = LocateLinkList(L, e); if(i) { printf("元素%d在链表中的位置为:%d\n", e, i); } else { printf("元素%d不在链表中!\n", e); } return 0;

优化一下#includestdioh#includestdlibhint maxsize;typedef struct LNode	int data;	struct LNode next;LNode LinkList;初始化int InitListLinkList L	LNode p;	p=LNodemallocsizeofLNode;	p-next=NULL;建表 int GreatLinkLi

原文地址: https://www.cveoy.top/t/topic/chNN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录