未完成数据结构题目
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Position
{
int Element;
struct Position*base;
struct Position *next;
}Position, *LinkList;
LinkList CreateList(LinkList& p)
{
LinkList head;
p=head= (LinkList) malloc(sizeof(Position));
printf("Please input 4 numbers:");
for (int i = 0; i < 4; i++)
{
cin >> p->Element;
p->next = (LinkList) malloc(sizeof(LinkList));
p = p->next;
}
p->next = head;
return p;
}
void main()
{
int n=5,x,y;
LinkList p,q;
CreateList(p);
cout << "Please input x and y:" << endl;
cin >> x >> y;
for (int i=1; i < y - 1; i++)
p = p->next;
q = (LinkList) malloc(sizeof(Position));
q->Element = x;
q->next = p->next;
p->next = q;
for (int i = 1; i < 5- x; i++)
p = p->next;
while ()
{
cout << p->Element<<" ";
p = p->next;
}
}
1 //假设带表头结点的单向链表头指针为head,试编写一个算法将值为5的结点插入到连接表的第k个结点前,删除第k个节点,并对该链表进行排序。 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <malloc.h> 5 #include <time.h> 6 struct NODE { 7 int data; 8 struct NODE *next; 9 } H,*head,*p,*q,*s1,*s2,*s3,*s4,*s; 10 int i,j,k,n,t,m; 11 int main() { 12 srand(time(NULL)); 13 14 //填写头节点数据 15 H.data=-1; 16 H.next=NULL; 17 head=&H; 18 19 //创建10个节点的单链表 20 p=head; 21 for (i=0;i<10;i++) { 22 q=(struct NODE *)malloc(sizeof(struct NODE)); 23 if (NULL==q) return 1; 24 q->data=rand()%100;//填写0..99的随机值 25 q->next=NULL; 26 p->next=q; 27 p=q; 28 } 29 30 //输出整个单链表 31 s=head->next; 32 while (1) { 33 if (NULL==s) { 34 printf("\n"); 35 break; 36 } 37 printf("%02d->",s->data); 38 s=s->next; 39 } 40 41 //将值为5的结点插入到单链表的第k个结点前 42 k=3; 43 n=0; 44 p=head; 45 while (1) { 46 if (NULL==p) { 47 break; 48 } 49 n++; 50 if (k==n) { 51 q=(struct NODE *)malloc(sizeof(struct NODE)); 52 if (NULL==q) return 1; 53 q->data=5; 54 q->next=p->next; 55 p->next=q; 56 break; 57 } 58 p=p->next; 59 } 60 61 //输出整个单链表 62 s=head->next; 63 while (1) { 64 if (NULL==s) { 65 printf("\n"); 66 break; 67 } 68 printf("%02d->",s->data); 69 s=s->next; 70 } 71 72 //删除第k个节点 73 k=5; 74 n=0; 75 p=head; 76 while (1) { 77 if (NULL==p) { 78 break; 79 } 80 n++; 81 if (k==n) { 82 q=p->next; 83 if (q) { 84 p->next=q->next; 85 free(q); 86 } 87 break; 88 } 89 p=p->next; 90 } 91 92 //输出整个单链表 93 s=head->next; 94 while (1) { 95 if (NULL==s) { 96 printf("\n"); 97 break; 98 } 99 printf("%02d->",s->data); 100 s=s->next; 101 } 102 103 //从小到大排序 104 for (p=head;p!=NULL && p->next!=NULL;p=p->next) { 105 for (q=p->next;q!=NULL && q->next!=NULL;q=q->next) { 106 if (p->next->data > q->next->data) { 107 108 //交换data 109 // printf("swap %02d %02d\n",p->next->data,q->next->data); 110 // t=p->next->data;p->next->data=q->next->data;q->next->data=t; 111 112 //或者 113 114 //交换next 115 // printf("swap %02d %02d\n",p->next->data,q->next->data); 116 s1=p->next; 117 s2=p->next->next; 118 s3=q->next; 119 s4=q->next->next; 120 121 if (s2!=s3) { 122 p->next=s3; 123 s3->next=s2; 124 q->next=s1; 125 s1->next=s4; 126 } else { 127 p->next=s3; 128 s3->next=s1; 129 q=s3; 130 s1->next=s4; 131 } 132 133 //输出整个单链表 134 // s=head->next; 135 // while (1) { 136 // if (NULL==s) { 137 // printf("\n"); 138 // break; 139 // } 140 // printf("%02d->",s->data); 141 // s=s->next; 142 // } 143 // getchar(); 144 } 145 } 146 } 147 148 //输出整个单链表 149 s=head->next; 150 while (1) { 151 if (NULL==s) { 152 printf("\n"); 153 break; 154 } 155 printf("%02d->",s->data); 156 s=s->next; 157 } 158 159 //将单链表中前 m 个结点和后 n 个结点进行互换,m+n为链表总长10 160 m=4; 161 n=6; 162 k=0; 163 p=head; 164 while (1) { 165 if (NULL==p) { 166 break; 167 } 168 k++; 169 if (m+1==k) { 170 q=p; 171 } 172 s=p; 173 p=p->next; 174 } 175 s1=head->next; 176 head->next=q->next; 177 s->next=s1; 178 q->next=NULL; 179 180 //输出整个单链表 181 s=head->next; 182 while (1) { 183 if (NULL==s) { 184 printf("\n"); 185 break; 186 } 187 printf("%02d->",s->data); 188 s=s->next; 189 } 190 191 //释放所有节点 192 p=head->next; 193 while (1) { 194 if (NULL==p) { 195 break; 196 } 197 q=p->next; 198 free(p); 199 p=q; 200 } 201 202 return 0; 203 } 204 //18->94->58->17->27->20->43->57->75->78-> 205 //18->94->05->58->17->27->20->43->57->75->78-> 206 //18->94->05->58->27->20->43->57->75->78-> 207 //05->18->20->27->43->57->58->75->78->94-> 208 //43->57->58->75->78->94->05->18->20->27-> 209 //
1 C 加struct list 才是一种类型。 2 3 struct alist{ int a; struct alist *next; }; 4 5 C++ ,alist 就是struct alist 都是类型名。 6 另外 C++标准库有个 list 模板 7 所以,一般类型定义,不要定义成list 这样的名字。 8 9 你把你的程序,分别存为 .c ,.cpp 10 用C,C++编译器分别编译一下,看看。 11 C一般不能通过,C++一般可以通过。 12 13 C++ ,struct,union,class ,enum 类型定义后,不需要加struct,union,class ,enum 等 类型关键字 就是类型名字。 14 15 C一般必须加类型名,才是一个完整的类型名字。