发布网友 发布时间:2022-05-27 18:12
共1个回答
热心网友 时间:2023-11-13 01:38
/* 线性表-链表的操作: 只提供核心语句 */ #include "stdio.h" #include "stdlib.h" #define N 100 typedef int ElemType; /* 链表的存储结构 */ typedef struct LNode{ ElemType data; struct LNode *next; } LNode,*LinkList; /* 链表的基本操作 */ /******* 1.初始化链表 ******/ void InitList(LinkList *L) { *L=(LinkList)malloc(sizeof(LNode)); (*L)->next=NULL; } /******* 2.销毁链表 ******/ void DestroyList(LinkList *L) { LinkList p; while(*L!=NULL) { p=*L; *L=(*L)->next; free(p); } } /******* 10.在顺序表第n个位置插入元素e ******/ void ListInsert(LinkList *L, int n, ElemType e) { LinkList p,q,new; int i; q=*L; p=(*L)->next; i=1; while (p!=NULL && i<n) { q=p; p=p->next; i++; } new=(LinkList)malloc(sizeof(LNode)); new->data=e; q->next=new; new->next=p; } /******* 11.删除链表中第n个位置的元素 ******/ void ListDelete(LinkList *L, int n, ElemType *e) { LinkList p,q; int i; q=*L; p=(*L)->next; i=1; while (p!=NULL && i<n) { q=p; p=p->next; i++; } *e=p->data; q->next=p->next; free(p); } /******* 12.遍历链表并输出 ******/ void ListTraverse(LinkList L) { LinkList p; printf("\nList:\t"); p=L->next; while (p!=NULL) { printf("%d\t",p->data); p=p->next; } } /******* A(2).后接法建立顺序链表 ******/ void CreateList2(LinkList *L, ElemType a[], int n) { LinkList p,new; int i; p=*L; for(i=0; i<n; i++) { new=(LinkList)malloc(sizeof(LNode)); new->data=a[i]; p->next=new; p=p->next; } p->next=NULL; } /* 主函数 */ main() { LinkList La; ElemType a[]={1,3,5,7,9},x; InitList(&La);//初始化链表 CreateList2(&La,a,5);//建立链表并用数组赋值 ListTraverse(La);//遍历链表 ListInsert(&La, 3, 100);//第三个位置插入100 ListTraverse(La);//遍历链表 ListDelete(&La,5,&x);//删除第五个元素,用x返回 ListTraverse(La);//遍历链表 DestroyList(&La);//销毁链表 } 真是恭喜您了 我们刚上完这章,以上答案绝对正确简洁