数组简单实现单向链表

来源:互联网 发布:手机桌面软件管理 编辑:程序博客网 时间:2024/06/03 18:24
#include "stdio.h"#include "stdlib.h"#define ElementType int#define MAX_SIZE 20typedef struct {ElementType data[MAX_SIZE];int last;}List;typedef List * Ptrl;/***初始化一个链表 */Ptrl MakeEmpty() {Ptrl list = (Ptrl)malloc(sizeof(list));list->last = -1;return list;}/***查找元素的位置*返回该位置的索引 */int Find(ElementType x, Ptrl list) {int index = 0;while ((index <= list->last)&&(list->data[index] != x)) index ++;if (index > list->last)return -1;return index;}/***添加元素 */int Add(ElementType x, Ptrl list) {if (list->last == MAX_SIZE - 1)return -1;list->data[list->last + 1] = x;list->last ++;return 0;}/***插入元素 */int Insert(ElementType x, int index, Ptrl list) {int i;if (list->last == MAX_SIZE - 1)return -1;if (index > list->last)return -1;for (i = list->last; i >= index; i -- ) {list->data[i + 1] = list->data[i];}list->data[index] = x;list->last ++;return 0;}/***删除元素 */int Delete (ElementType x, Ptrl list) {int index = 0;int i = 0;while (index <= list->last && list->data[index] != x)index ++;if (index > list->last) //找不到 return -1;for (i = index; i < list->last; i ++) {list->data[i] = list->data[i + 1];}list->last --;return 0;}/***查询链表的长度 */int Length(Ptrl list) {return list->last + 1;}/***打印该链表信息 */void Print(Ptrl list){int index = 0;printf("length:%d\n",Length(list));for (index = 0; index <= list->last; index ++) {printf("%d ",list->data[index]);}printf("\n");}

0 0