要求:
有以下数据序列:25、45、18、6、30,请完成以下任务:
- 为该数据序列建立顺序表。
- 从顺序表中查找元素 6,并返回该元素所在位置的数组下标。
- 为该数据序列建立单链表,要求建立带头结点的单链表。
- 打印输出该单链表,要求数据输出的顺序与数据输入的顺序一致。
- 从单链表中删除元素 6。
代码:
```cinclude
include
define MAXLEN 10
typedef struct Person{ int data[MAXLEN]; int last; }SeqList;
SeqList creatSeqList() //堆创建 { SeqList p =(SeqList *)malloc(sizeof(SeqList)); p->last = -1; return p; }
void insertSeqList(SeqList *sq,int x,int i) //插入数组 { int j; if (MAXLEN-1==sq->last) { printf(“list is full.\n”); } if (i<=0||i>sq->last+2) { printf(“i is erro.\n”); } for (j=sq->last;j>=i-1;j—) { sq->data[j+1]=sq->data[j]; } sq->data[i-1]=x; sq->last++; }
void showSeqList(SeqList *sq) //打印数组 { int i; printf(“List is:\n”); for(i=0;i<=sq->last;i++) { printf(“%d “,sq->data[i]); } printf(“\n”); }
int searchSeqlist(SeqList *sq,int x) //查找数组 { int i; for(i=0;i<=sq->last;i++) { if (sq->data[i]== x) { break; } } if (i>sq->last) { return -1; } else { return i; } }
void delSeqList(SeqList *sq,int x) //删除 { int i; for(i=0;i<=sq->last;i++) { if (sq->data[i]== x) { for (int j=i+1;j<=sq->last;j++) { sq->data[j-1]=sq->data[j]; } sq->last—; } } }
int main() { SeqList *s = creatSeqList(); insertSeqList(s,25,1); //插入 insertSeqList(s,45,2); insertSeqList(s,18,3); insertSeqList(s,6,4); insertSeqList(s,30,5); showSeqList(s); //打印数组 int list; list=searchSeqlist(s,6); //查找 printf(“下标为:%d\n”,list); delSeqList(s,6); //删除 showSeqList(s);
} ```
