线性表的遍历c语言创建
时间: 2023-05-27 17:02:23 浏览: 87
typedef struct node{
int data;
struct node* next;
}Node, *LinkList;
//创建链表
LinkList CreateList(int n){
LinkList head, p;
head = (LinkList)malloc(sizeof(Node));
head->next = NULL;
int i;
for(i = n; i > 0; i--){
p = (LinkList)malloc(sizeof(Node));
scanf("%d", &p->data);
p->next = head->next;
head->next = p;
}
return head->next;
}
//遍历链表
void TraversalList(LinkList p){
while(p != NULL){
printf("%d ", p->data);
p = p->next;
}
}
int main(){
LinkList p = CreateList(5);
TraversalList(p);
return 0;
}
相关问题
用c语言编写功能菜单程序,实现初始化、线性表遍历、插入、删除4个基本操作
以下是一个简单的基于控制台的线性表程序,实现了初始化、遍历、插入和删除操作:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 线性表最大长度
typedef struct {
int data[MAX_SIZE];
int length;
} List;
void init(List *list) {
list->length = 0;
printf("线性表已初始化\n");
}
void traverse(List *list) {
printf("线性表元素:");
for (int i = 0; i < list->length; i++) {
printf("%d ", list->data[i]);
}
printf("\n");
}
void insert(List *list) {
if (list->length == MAX_SIZE) {
printf("线性表已满,无法插入\n");
return;
}
int pos, value;
printf("请输入要插入的位置和值(用空格隔开):");
scanf("%d %d", &pos, &value);
if (pos < 1 || pos > list->length + 1) {
printf("插入位置无效\n");
return;
}
for (int i = list->length; i >= pos; i--) {
list->data[i] = list->data[i - 1];
}
list->data[pos - 1] = value;
list->length++;
printf("插入成功\n");
}
void remove(List *list) {
if (list->length == 0) {
printf("线性表已空,无法删除\n");
return;
}
int pos;
printf("请输入要删除的位置:");
scanf("%d", &pos);
if (pos < 1 || pos > list->length) {
printf("删除位置无效\n");
return;
}
for (int i = pos - 1; i < list->length - 1; i++) {
list->data[i] = list->data[i + 1];
}
list->length--;
printf("删除成功\n");
}
int main() {
List list;
int choice;
init(&list);
while (1) {
printf("请选择操作:\n");
printf("1. 遍历线性表\n");
printf("2. 插入元素\n");
printf("3. 删除元素\n");
printf("4. 退出程序\n");
printf("请输入操作编号:");
scanf("%d", &choice);
switch (choice) {
case 1:
traverse(&list);
break;
case 2:
insert(&list);
break;
case 3:
remove(&list);
break;
case 4:
printf("程序已退出\n");
exit(0);
default:
printf("输入无效\n");
}
}
return 0;
}
```
程序中使用了一个结构体来表示线性表,并定义了四个基本操作的函数。在主函数中,使用一个无限循环来接收用户的操作选择,并调用相应的函数来处理。如果用户输入了无效的操作编号,则会提示输入无效。如果要退出程序,可以选择编号为4的操作。
c语言线性表的简单创建和操作
C语言中创建和操作线性表通常通过数组实现。首先需要定义一个数组来存储元素,并定义一个变量来记录线性表中已经存储的元素个数。
创建线性表时,需要定义线性表的最大长度,例如定义一个长度为100的数组来存储线性表中的元素。创建一个变量count初始值为0,用来记录线性表的元素个数。
操作线性表主要包括插入、删除、查询等操作。在插入元素时,我们需要判断线性表是否已满,若未满则将新元素插入到数组的末尾,并将count加1。在删除元素时,我们需要判断线性表是否为空,若不为空则删除数组的最后一个元素,并将count减1。在查询元素时,可以通过遍历数组来查找特定的元素。
具体代码示例如下:
```c
#include<stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int count;
} LinearList;
void init(LinearList *list) {
list->count = 0; // 初始化线性表
}
void insert(LinearList *list, int element) {
if(list->count < MAX_SIZE) {
list->data[list->count] = element; // 在末尾插入新元素
list->count++;
printf("插入成功\n");
} else {
printf("线性表已满,插入失败\n");
}
}
void remove(LinearList *list) {
if(list->count > 0) {
list->count--; // 删除最后一个元素
printf("删除成功\n");
} else
printf("线性表为空,删除失败\n");
}
void search(LinearList *list, int element) {
int flag = 0;
for(int i=0; i<list->count; i++) {
if(list->data[i] == element) {
flag = 1;
printf("元素%d在线性表中\n", element);
break;
}
}
if(flag == 0)
printf("元素%d不在线性表中\n", element);
}
int main() {
LinearList list;
init(&list); // 初始化线性表
insert(&list, 1); // 插入元素1
insert(&list, 2); // 插入元素2
remove(&list); // 删除最后一个元素
search(&list, 1); // 查询元素1
return 0;
}
```
以上代码实现了线性表的简单创建和操作,包括插入元素、删除元素和查询元素的功能。这只是一个简单的示例,实际应用中可能还需要更多的功能和操作来满足具体需求。