关于数据结构的问题(C语言版)
需要程序能运行 展开
#include <stdio.h>
#define N 100
int num[N],len=5;//用作顺序存储的线性表 ,定义出事长度len
int main()
{
int i=0;
printf("输入原始线性表五个数据:");
for(i=0; i<len; i++)//输入初始数据
scanf("%d",&num[i]);
printf("原始线性表:");
for(i=0; i<len; i++)//输出初始数据
printf("%d ",num[i]);
printf("\n输入一个数插入在第二位前面:");
for(i=len; i>=2; i--)//将要插入的位置的后面数据向后移一位,给插入数据留下空位
num[i+1] = num[i];
scanf("%d",&num[2]);//输入插入的数据
len++;//线性表长度加1
printf("插入数据后线性表:");
for(i=0; i<len; i++)//输出插入的结果
printf("%d ",num[i]);
}
你看看这个可是你想要的,需不需要封装成函数?
2023-08-15 广告
楼上的错了你那是在第三个元素前插入!!!!!!!!!!不是第二个元素,楼主看这里正确解答
#include<stdio.h>
struct LNode
{
char data;
struct LNode *next;
};
void main()
{
struct LNode a,b,c,d,e,*head,*p;
int in=0;
a.data=1;
b.data=2;
c.data=3;
d.data=4;
e.data=5;
head=&a;
a.next=&b;
b.next=&c;
c.next=&d;
d.next=&e;
e.next=NULL;
p=head;
printf("The list before insert\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
p=head;
printf("please input\n");
scanf("%d",&in);
struct LNode f;
f.data=in;
a.next=&f;
f.next=&b;
printf("The list after insert\n");
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
/*
原表:
0 1 2 3 4 5 6 7 8 9
10
在索引5处插入55
0 1 2 3 4 55 5 6 7 8
9 10
删除索引3处的成员
0 1 2 4 55 5 6 7 8 9
10
Press any key to continue
*/
#include <stdio.h>
#include <stdlib.h>
#define MAXLEN 100 // 最大表长
#define N 10 // 每行显示数据个数
typedef int dataType;
typedef struct _tag {
dataType data[MAXLEN];
int length;
}LIST,*pList;
pList CreateList(dataType a[], int n) { // 创建一个表
int i;
LIST *NewList = (LIST *)malloc(sizeof(LIST));
if(n > MAXLEN) n = MAXLEN;
for(i = 0; i < n; ++i)
NewList->data[i] = a[i];
NewList->length = n;
return NewList;
}
void ShowList(LIST *L) {
int i;
for(i = 0; i < L->length; ++i) {
printf("%d ",L->data[i]);
if(i % N == 9) printf("\n"); // 每行显示N个数据
}
if(i % N != 0) printf("\n"); // 不满一行加一个新行符
}
void EraseElem(LIST *L, int index) { // 删除索引为index的元素
int i;
if(index > L->length - 1) {
--L->length;
return;
}
if(index < 0) index = 0;
for(i = index; i < L->length - 1; ++i)
L->data[i] = L->data[i + 1];
--L->length;
}
int InsertElem(LIST *L, int index, dataType data) { // 将data插到index索引位置
int i;
if(index >= MAXLEN) return 0;
if(index > L->length - 1) {
L->data[L->length - 1] = data;
++L->length;
return 1;
}
if(index < 0) index = 0;
for(i = L->length; i > index; --i)
L->data[i] = L->data[i - 1];
L->data[index] = data;
++L->length;
return 1;
}
int main() {
LIST *mylist;
dataType ar[] = {0,1,2,3,4,5,6,7,8,9,10};
int n = sizeof(ar)/sizeof(ar[0]);
int index;
dataType member;
mylist = CreateList(ar,n);
printf("原表:\n");
ShowList(mylist);
index = 5;
member = 55;
printf("在索引%d处插入%d\n",index,member);
InsertElem(mylist,index,member);
ShowList(mylist);
index -= 2;
printf("删除索引%d处的成员\n",index);
EraseElem(mylist,index);
ShowList(mylist);
free(mylist);
return 0;
}